訂閱
糾錯(cuò)
加入自媒體

關(guān)鍵字static的使用方法

3. 可執(zhí)行程序內(nèi)存空間與邏輯地址空間的映射與劃分

左邊是UNIX系統(tǒng)的執(zhí)行文件,右邊是進(jìn)程對(duì)應(yīng)的邏輯地址空間的劃分情況

4. 舉例

二、static 變量

static變量主要區(qū)分靜態(tài)全局變量和全局變量、局部變量和靜態(tài)局部變量之間的區(qū)別。

1. 靜態(tài)全局變量、全局變量

靜態(tài)全局變量、全局變量的區(qū)別主要通過生存周期和作用域來區(qū)別。

全局變量靜態(tài)全局變量生存周期程序運(yùn)行到程序結(jié)束程序運(yùn)行開始到程序結(jié)束作用域所有的代碼只有當(dāng)前文件可以訪問代碼段中位置全局?jǐn)?shù)據(jù)區(qū)全局?jǐn)?shù)據(jù)區(qū)a.靜態(tài)全局變量和全局變量均存放在數(shù)據(jù)段.data中;b. 靜態(tài)局部變量在函數(shù)內(nèi)定義,生存期為整個(gè)源程序,但作用域與自動(dòng)變量相同,只能在定義該變量的函數(shù)內(nèi)使用。退出該函數(shù)后, 盡管該變量還繼續(xù)存在,但不能使用它。c. 對(duì)基本類型的靜態(tài)局部變量若在說明時(shí)未賦以初值,則系統(tǒng)自動(dòng)賦予0值。而對(duì)自動(dòng)變量不賦初值,則其值是不定的。d.全局變量本身就是靜態(tài)存儲(chǔ)方式, 靜態(tài)全局變量當(dāng)然也是靜態(tài)存儲(chǔ)方式。但是他們的作用域,非靜態(tài)全局 變量的作用域是整個(gè)源程序(多個(gè)源文件可以共同使用);而靜態(tài)全局變量則限制了其作用域, 即只在定義該變量的源文件內(nèi)有效, 在同一源程序的其它源文件中不能使用它。全局變量實(shí)例

以下是b.c 和 a.c源代碼

全局變量

編譯

gcc a.c b.c

執(zhí)行結(jié)果:

執(zhí)行結(jié)果

由編譯結(jié)果可知,文件a.c可以訪問到b.c文件中的靜態(tài)全局變量b。

靜態(tài)全局變量實(shí)例

編譯結(jié)果

編譯結(jié)果

由編譯結(jié)果可知,文件a.c無法訪問到b.c文件中的靜態(tài)全局變量b,所以編譯報(bào)錯(cuò)。

2. 靜態(tài)局部變量、局部變量

靜態(tài)局部變量、局部變量的區(qū)別主要通過生存周期和作用域來區(qū)別。


局部變量靜態(tài)局部變量生存周期函數(shù)調(diào)用到函數(shù)返回程序運(yùn)行開始到程序結(jié)束作用域函數(shù)內(nèi)部函數(shù)內(nèi)部代碼段中位置棧全局?jǐn)?shù)據(jù)區(qū)

靜態(tài)局部變量存放在數(shù)據(jù)段.data中,局部變量在棧中;靜態(tài)局部變量和局部變量都只能在函數(shù)體內(nèi)部才可以訪問。

函數(shù)每次訪問的靜態(tài)局部變量,該變量的值為最后一次訪問修改后的值。

舉例:

 1 #include <stdio.h>
 2
 3
 4 void func()
 5 {
 6     int aa = 11;
 7
 8     printf("aa= %d ",aa++);
 9
10 }
11
12 int main(int argc, char **argv)
13 {
14
15     func();                                                                                    
16     func();
17
18     return 0;
19 }

<上一頁  1  2  3  下一頁>  
聲明: 本文由入駐維科號(hào)的作者撰寫,觀點(diǎn)僅代表作者本人,不代表OFweek立場(chǎng)。如有侵權(quán)或其他問題,請(qǐng)聯(lián)系舉報(bào)。

發(fā)表評(píng)論

0條評(píng)論,0人參與

請(qǐng)輸入評(píng)論內(nèi)容...

請(qǐng)輸入評(píng)論/評(píng)論長(zhǎng)度6~500個(gè)字

您提交的評(píng)論過于頻繁,請(qǐng)輸入驗(yàn)證碼繼續(xù)

  • 看不清,點(diǎn)擊換一張  刷新

暫無評(píng)論

暫無評(píng)論

人工智能 獵頭職位 更多
掃碼關(guān)注公眾號(hào)
OFweek人工智能網(wǎng)
獲取更多精彩內(nèi)容
文章糾錯(cuò)
x
*文字標(biāo)題:
*糾錯(cuò)內(nèi)容:
聯(lián)系郵箱:
*驗(yàn) 證 碼:

粵公網(wǎng)安備 44030502002758號(hào)