標籤:全域變數 個數 str strong col 動態 變數類型 初始化 資料存放區
變數三要素:
一個變數有三個基本的要素,變數的名稱,變數的類型,變數的值。
所以int a = 10; 變數名為a,變數的儲存類型為int型,變數的值為10。
變數還有一些屬性如作用範圍和儲存類型。
變數作用範圍和儲存類型
作用範圍有局部變數和全域變數。局部只在特定範圍內起作用。全部變數在整個程式運行期間起作用。
儲存類型有auto(自動),static(靜態),register(寄存器變數)
自動變數auto預設省略,int a = 10; 和 auto int a = 10;是一樣的。自動變數動態分配記憶體空間,資料存放區在動態儲存裝置區內。
靜態變數static,在函數初始化的時候就分配空間,而且資料存放區在靜態儲存區內,在程式運行期間,變數的儲存空間不會被釋放掉。
指標變數
指標變數除了上面的三要素以外,還有指標指向的資料類型。
int *p = &a;
變數名為p,變數的類型為指標類型,變數的值為a的地址,該指標變數指向的資料類型為int類型。
如何判斷變數類型
int (*p)(int,int); 指向函數的指標。
是一個指標,該指標指向一個函數入口。
判斷方法:p先和*結合,為一個指標。後和(int,int)結合,指標指向傳回值為int 的函數。
float *fun(int a); 返回指標值的函數。為一個函數,形參為int型,傳回值為一個float類型指標。
判斷方法,fun和(int a)結合,為函數。函數傳回值為float類型指標。
int *p[4]; 指標數組。為一個數組,數組裡面元素的儲存類型為指標類型。
判斷方法:p和[4]結合,為一個數組,數組儲存的類型為int類型指標。
float (*pointer)[4] ;指向一維數組的指標變數。為一個指標,指標指向長度為4的數組。
判斷方法:pointer和*結合,為一個指標。該指標指向一個長度為4的,存有float類型的數組。
所以判斷一個變數類型的時候,先看變數名的結合性,首先和什麼結合就是什麼類型變數,先和指標結合就是指標變數,和數組結合就是數組。然後在看該變數的其它屬性:指標有其指向的類型、數組有其儲存類型,函數有傳回型別和形參等等。
如何判斷c語言的變數類型