<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                企業??AI智能體構建引擎,智能編排和調試,一鍵部署,支持知識庫和私有化部署方案 廣告
                本文目錄 - [?一、變量的作用域](http://www.cnblogs.com/mjios/archive/2013/03/21/2973719.html#label0) - [二、變量的存儲類型](http://www.cnblogs.com/mjios/archive/2013/03/21/2973719.html#label1) 說明:這個C語言專題,是學習iOS開發的前奏。也為了讓有面向對象語言開發經驗的程序員,能夠快速上手C語言。如果你還沒有編程經驗,或者對C語言、iOS開發不感興趣,請忽略 C語言有豐富的數據類型和運算符,因此計算能力非常強大,計算過程中使用的值一般用變量來存儲。變量也是有分類型的,不同類型的變量有不同的存儲類型、不同的生命周期、不同的作用域,C語言也提供了一些關鍵字來設置變量的屬性(比如設置存儲類型、生命周期)。 [回到頂部](http://www.cnblogs.com/mjios/archive/2013/03/21/2973719.html#labelTop) ### ?一、變量的作用域 C語言根據變量作用域的不同,將變量分為局部變量和全局變量。 ### 1.局部變量 1> 定義:在函數內部定義的變量,稱為局部變量。形式參數也屬于局部變量。 2> 作用域:局部變量只在定義它的函數內部有效,即局部變量只有在定義它的函數內部使用,其它函數不能使用它。 ### 2.全局變量 1> 定義:在所有函數外部定義的變量,稱為全局變量。 2> 作用域:全局變量的作用范圍是從定義變量的位置開始到源程序結束,即全局變量可以被在其定義位置之后的其它函數所共享。 ~~~ 1 int a; 2 3 int main () 4 { 5 int b; 6 return 0; 7 } ~~~ 第1行的變量a是全局變量,第5行的變量b是局部變量。 [回到頂部](http://www.cnblogs.com/mjios/archive/2013/03/21/2973719.html#labelTop) ### 二、變量的存儲類型 * 變量的存儲類型就是指變量存儲在什么地方。有3個地方可以用于存儲變量:普通內存、運行時堆棧、硬件寄存器。變量的存儲類型決定了變量何時創建、何時銷毀以及它的值能保持多久,也就是決定了變量的生命周期。 * C語言根據變量的存儲類型的不同,可以把變量分為:自動變量、靜態變量、寄存器變量。 ### 1.自動變量 1>?定義:自動變量是存儲在堆棧中的。 2> 哪些是自動變量:被關鍵字auto修飾的局部變量都是自動變量,但是極少使用這個關鍵字,基本上是廢的,因為所有的局部變量在默認情況下都是自動變量。 3> 生命周期:在程序執行到聲明自動變量的代碼塊(函數)時,自動變量才被創建;當自動變量所在的代碼塊(函數)執行完畢后,這些自動變量就會自行銷毀。如果一個函數被重復調用,這些自動變量每次都會重新創建。 ~~~ 1 void test(int a, int b) { 2 int c = a + b; 3 4 auto int d; 5 } ~~~ 第1行的變量a、b,第2行的變量c、第4行的變量d都是自動變量。 ### 2.靜態變量 1> 定義:靜態變量是存儲在靜態內存中的,也就是不屬于堆棧。 2> 哪些是靜態變量: - 所有的全局變量都是靜態變量 - 被關鍵字static修飾的局部變量也是靜態變量 3> 生命周期:靜態變量在程序運行之前創建,在程序的整個運行期間始終存在,直到程序結束。 ~~~ 1 #include <stdio.h> 2 3 int a; 4 5 void test() { 6 static int b = 0; 7 b++; 8 9 int c = 0; 10 c++; 11 12 printf("b=%d, c=%d \n", b, c); 13 } 14 15 int main() { 16 int i; 17 // 連續調用3次test函數 18 for (i = 0; i<3; i++) { 19 test(); 20 } 21 22 return 0; 23 } ~~~ * 第3行的變量a、第6行的變量b都是靜態變量,第9行的變量c、第16行的變量i是自動變量。 * 因為第6行的變量b是靜態變量,所以它只會被創建一次,而且生命周期會延續到程序結束。因為它只會創建一次,所以第6行代碼只會執行一次,下次再調用test函數時,變量b的值不會被重新初始化為0。 * 注意:雖然第6行的變量b是靜態變量,但是只改變了它的存儲類型(即生命周期),并沒有改變它的作用域,變量b還是只能在test函數內部使用。 * 我們在main函數中重復調用test函數3次,輸出結果為:![](https://box.kancloud.cn/2016-05-07_572d767a5cda5.png) ### 3.寄存器變量 1> 定義:存儲在硬件寄存器中的變量,稱為寄存器變量。寄存器變量比存儲在內存中的變量訪問效率更高(默認情況下,自動變量和靜態變量都是放在內存中的) 2> 哪些變量是寄存器變量: - 被關鍵字register修飾的自動變量都是寄存器變量 - 只有自動變量才可以是寄存器變量,全局變量和靜態局部變量不行 - 寄存器變量只限于int、char和指針類型變量使用 3> 生命周期:因為寄存器變量本身就是自動變量,所以函數中的寄存器變量在調用該函數時占用寄存器中存放的值,當函數結束時釋放寄存器,變量消失。 4> 使用注意: - 由于計算機中寄存器數目有限,不能使用太多的寄存器變量。如果寄存器使用飽和時,程序將寄存器變量自動轉換為自動變量處理 - 為了提高運算速度,一般會將一些頻繁使用的自動變量定義為寄存器變量,這樣程序盡可能地為它分配寄存器存放,而不用內存 ~~~ 1 int main() { 2 register int a; 3 return 0; 4 } ~~~ 第2行的變量a是個寄存器變量。
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看