亚洲欧洲国产欧美一区精品,激情五月亚洲色五月,最新精品国偷自产在线婷婷,欧美婷婷丁香五月天社区

      考試首頁 | 考試用書 | 培訓(xùn)課程 | 模擬考場(chǎng) | 考試論壇  
      全國(guó)  |             |          |          |          |          |         
        當(dāng)前位置:計(jì)算機(jī)等級(jí) > 二級(jí)考試 > C語言程序設(shè)計(jì) > C語言輔導(dǎo) > 文章內(nèi)容
        

      全國(guó)計(jì)算機(jī)等級(jí)考試二級(jí)C語言入門教程(79)

      中華IT學(xué)院   【 】  [ 2016年2月29日 ]

      自動(dòng)變量的類型說明符為auto。
      這種存儲(chǔ)類型是C語言程序中使用最廣泛的一種類型。C語言規(guī)定, 函數(shù)內(nèi)凡未加存儲(chǔ)類型說明的變量均視為自

      動(dòng)變量,也就是說自動(dòng)變量可省去說明符auto。 在前面各章的程序中所定義的變量凡未加存儲(chǔ)類型說明符的都是自

      動(dòng)變量。例如:

      { int i,j,k;

      char c;

      ……

      }等價(jià)于: { auto int i,j,k;

      auto char c;

      ……

      }
      自動(dòng)變量具有以下特點(diǎn):

      1. 自動(dòng)變量的作用域僅限于定義該變量的個(gè)體內(nèi)。在函數(shù)中定義的自動(dòng)變量,只在該函數(shù)內(nèi)有效。在復(fù)合語句中定義
      的自動(dòng)變量只在該復(fù)合語句中有效。 例如:
      int kv(int a)
      {
      auto int x,y;
      { auto char c;
      } /*c的作用域*/
      ……
      } /*a,x,y的作用域*/


      2. 自動(dòng)變量屬于動(dòng)態(tài)存儲(chǔ)方式,只有在使用它,即定義該變量的函數(shù)被調(diào)用時(shí)才給它分配存儲(chǔ)單元,開始它的生存期。
      函數(shù)調(diào)用結(jié)束,釋放存儲(chǔ)單元,結(jié)束生存期。因此函數(shù)調(diào)用結(jié)束之后,自動(dòng)變量的值不能保留。在復(fù)合語句中定義的
      自動(dòng)變量,在退出復(fù)合語句后也不能再使用,否則將引起錯(cuò)誤。例如以下程序:
      main()

      { auto int a,s,p;

      printf("\ninput a number:\n");

      scanf("%d",&a);

      if(a>0){

      s=a+a;

      p=a*a;

      }

      printf("s=%d p=%d\n",s,p);

      }

      { auto int a;

      printf("\ninput a number:\n");

      scanf("%d",&a);

      if(a>0){

      auto int s,p;

      s=a+a;

      p=a*a;

      }

      printf("s=%d p=%d\n",s,p);

      }

      s,p是在復(fù)合語句內(nèi)定義的自動(dòng)變量,只能在該復(fù)合語句內(nèi)有效。而程序的第9行卻是退出復(fù)合語句之后用 printf語

      句輸出s,p的值,這顯然會(huì)引起錯(cuò)誤。

      3. 由于自動(dòng)變量的作用域和生存期都局限于定義它的個(gè)體內(nèi)( 函數(shù)或復(fù)合語句內(nèi)), 因此不同的個(gè)體中允許使用同名
      的變量而不會(huì)混淆。 即使在函數(shù)內(nèi)定義的自動(dòng)變量也可與該函數(shù)內(nèi)部的復(fù)合語句中定義的自動(dòng)變量同名。例 5.14表
      明了這種情況。
      [例5.14]
      main()
      {
      auto int a,s=100,p=100;



      printf("\ninput a number:\n");
      scanf("%d",&a);
      if(a>0)
      {
      auto int s,p;
      s=a+a;
      p=a*a;
      printf("s=%d p=%d\n",s,p);
      }
      printf("s=%d p=%d\n",s,p);
      }


      本程序在 main函數(shù)中和復(fù)合語句內(nèi)兩次定義了變量s,p為自動(dòng)變量。按照C語言的規(guī)定,在復(fù)合語句內(nèi),應(yīng)由復(fù)
      合語句中定義的s,p起作用,故 s的值應(yīng)為a+ a,p的值為a*a。退出復(fù)合語句后的s,p 應(yīng)為main所定義的s,p,其
      值在初始化時(shí)給定,均為100。從輸出結(jié)果可以分析出兩個(gè) s和兩個(gè)p雖變量名相同, 但卻是兩個(gè)不同的變量。

      4. 對(duì)構(gòu)造類型的自動(dòng)變量如數(shù)組等,不可作初始化賦值。

      分享到:
      本文糾錯(cuò)】【告訴好友】【打印此文】【返回頂部
      將考試網(wǎng)添加到收藏夾 | 每次上網(wǎng)自動(dòng)訪問考試網(wǎng) | 復(fù)制本頁地址,傳給QQ/MSN上的好友 | 申請(qǐng)鏈接 | 意見留言 TOP
      關(guān)于本站  網(wǎng)站聲明  廣告服務(wù)  聯(lián)系方式  站內(nèi)導(dǎo)航  考試論壇
      Copyright © 2006-2017 中華考試網(wǎng)(Examw.com) All Rights Reserved  營(yíng)業(yè)執(zhí)照