三、學習筆記,C語言—變量

目錄

變量

變量的基礎

  • 變量在程序中用變量名錶示。變量名由用戶根據其用途任意命名。
  • 變量名由字母、數字、下劃線組成,不能以數字開頭,不能和C的關鍵字重名。
  • 在程序運行時,變量佔據存儲空間的大小由其數據類型決定。
  • 變量在內存空間中的首地址,稱爲變量的地址。

變量的說明

變量在程序中使用時,必須預先說明它們的存儲類型和數據類型。

  • 變量說明的一般形式是:

<存儲類型> <數據類型 > <變量名>

  • <存儲類型>是關鍵詞auto(默認,可省略)、register、static和extern
  • <數據類型>可以是基本數據類型,也可以是自定義的數據類型

存儲類型

auto(動態存儲類型)

  • auto說明的變量只能在某個程序範圍內使用,通常在函數體內或函數中的複合語句裏。(默認是隨機值)
  • 在函數體的某程序段內說明auto存儲類型的變量時可以省略關鍵字auto

registe(寄存器存儲類型)

  • register稱爲寄存器型,register變量是想將變量放入CPU的寄存器中,這樣可以加快程序的運行速度。
  • 如申請不到就使用一般內存,同auto ;
    在這裏插入圖片描述
  • register變量必須是能被CPU所接受的類型。這通常意味着register變量必須是一個單個的值,並且長度應該小於或者等於整型的長度。
  • 不能用“&”來獲取register變量的地址。
  • 由於寄存器的數量有限,真正起作用的register修飾符的數目和類型都依賴於運行程序的機器。
  • 在某些情況下,把變量保存在寄存器中反而會降低程序的運行速度。因爲被佔用的寄存器不能再用於其它目的;或者變量被使用的次數不夠多,不足以裝入和存儲變量所帶來的額外開銷。
  • 只有局部變量和形參可以作爲register變量,全局變量不行

static(靜態存儲類型)

static變量稱爲靜態存儲類型的變量,既可以在函數體內(局部變量),也可在函數體外(全局變量)說明。(默認是0)

局部變量使用static修飾,有以下特點:

  • 在內存中以固定地址存放的,而不是以堆棧方式存放
  • 只要程序沒結束,就不會隨着說明它的程序段的結束而消失,它下次再調用該函數,該存儲類型的變量不再重新說明,而且還保留上次調用存入的數值。

局部變量不使用static修飾的情況

#include <stdio.h>
int main(int argc, const char *argv)
{
    int i = 0;
    while(i < 5)
    {
        int a = 0;
        a++;
        printf("a=%d", a)
        i++;
    }
    return 0;
}   

程序運行結果如下
static
局部變量使用static修飾的情況

#include <stdio.h>
int main(int argc, const char *argv)
{
     int i = 0;
    while(i < 5)
    {
      	static int a = 0;
        a++;
        printf("a=%d", a)
        i++;
    }
    return 0;
}   

程序運行結果如下
在這裏插入圖片描述

extern(靜態、外部鏈接)

  • 當變量在一個文件中的函數體外說明,所有其他文件中的函數或程序段都可引用這個變量。
  • extern稱爲外部參照引用型,使用extern說明的變量是想引用在其它文件中函數體外部說明的變量。
  • static修飾的全部變量,其它文件無法使用
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章