1、全域性變數和靜態變數的異同
全域性變數的作用域是整個程式,它只需在乙個原始檔中定義,就可以作用於所有的原始檔,其他不包含全域性變數定義的原始檔需要用extern關鍵字再次宣告這個全域性變數。若某乙個區域性變數重新定義了這個全域性變數,則全域性變數作用域是除了這個區域性外的整個程式,它的生命期與整個程式的生命期一樣長。
全域性變數、靜態全域性變數、靜態區域性變數都在靜態儲存區分配空間,生命期與程式生命期相同,不同點在於全域性變數具有全域性作用域,靜態變數具有穩健作用域。
靜態區域性變數具有區域性作用域,只被初始化一次,自從第一次被初始化直到程式執行結束都一直存在。靜態區域性變數只對定義自己的函式體始終可見。
靜態全域性變數也具有全域性作用域,被static關鍵字修飾過的靜態全域性變數具有檔案作用域,即使兩個不同的原始檔都定義了相同名字的靜態全域性變數,他們也是不同的變數。
區域性變數在棧上分配空間。
把區域性變數改變成靜態區域性變數後改變的是它的儲存方式,即改變了它的生命期。把全域性變數改變成靜態全域性變數後改變的是它的作用域,限制了它的使用範圍。
#include
static
int j;
int k=0;
int m;
void fun1()
void fun2()
int main()
; }
printf("%d\n",m);
printf("%d\n",j);
return0;}
//程式輸出結果為:
//10
//1
i為靜態區域性變數,只能被初始化一次,j在此程式中是全域性變數,每次函式呼叫的時候都會被初始化。
2、區域性變數需要「避諱」全域性變數嗎?
區域性變數可以與全域性變數重名,但是區域性變數會遮蔽全域性變數。在函式體內引用變數會用到同名的區域性變數,而不會使用到全域性變數。
全域性變數與區域性變數區別如下:
(1)作用域:全域性變數作用域是程式塊,區域性變數是當前函式
(2)儲存方式:全域性變數分配在全域性資料區,區域性變數在棧區
(3)生命週期:全域性變數生命期與程式生命期一樣長,區域性變數生命期與當前函式一樣長
(4)使用方式:區域性變數只能在區域性使用
需要注意的是,區域性變數不能賦值為同名全域性變數。
3、變數的定義與變數的宣告
有關執行緒的知識點
今天總結的是有關執行緒的知識點 執行緒的狀態轉換是執行緒控制的基礎。執行緒狀態總的可分為五大狀態 分別是生 死 可執行 執行 等待 阻塞。用乙個圖來描述如下 睡眠的實現 呼叫靜態方法。try catch interruptedexception e 設定執行緒的優先順序 執行緒預設的優先順序是建立它...
有關常量的知識點
整型常量 十進位制 18 31 long int型常量 123l 123l 123456l 123456l unsigned int型常量 123u 123u 根據實際資料大小確定int型還是long型 以數字 0 開始的整型常量是八進位制數 022 037 010和10大小不一樣 因為八進位制並不...
有關陣列的知識點
1.一維陣列的定義格式為 型別說明符 陣列名 常量表示式 例如 int a 10 它表示定義了乙個整形陣列,陣列名為a,有10個元素。2.在定義陣列時,需要指定陣列中元素的個數,方括弧中的常量表示式用來表示元素的個數,即陣列長度。3.常量表示式中可以包括常量和符號常量,但不能包含變數。注意 c語言不...