亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > C > 正文

static關(guān)鍵字的作用詳解

2020-01-26 16:19:11
字體:
供稿:網(wǎng)友

(1)先來介紹它的第一條也是最重要的一條:隱藏。

當(dāng)我們同時編譯多個文件時,所有未加static前綴的全局變量和函數(shù)都具有全局可見性。為理解這句話,我舉例來說明。我們要同時編譯兩個源文件,一個是a.c,另一個是main.c。

下面是a.c的內(nèi)容

復(fù)制代碼 代碼如下:

char a = 'A'; // global variable
void msg()
{
    printf("Hello/n");
}

 下面是main.c的內(nèi)容
復(fù)制代碼 代碼如下:

int main(void)
{   
    extern char a;    // extern variable must be declared before use
    printf("%c ", a);
    (void)msg();
    return 0;
}

程序的運(yùn)行結(jié)果是:

A Hello

你可能會問:為什么在a.c中定義的全局變量a和函數(shù)msg能在main.c中使用?前面說過,所有未加static前綴的全局變量和函數(shù)都具有全局可見性,其它的源文件也能訪問。此例中,a是全局變量,msg是函數(shù),并且都沒有加static前綴,因此對于另外的源文件main.c是可見的。

如果加了static,就會對其它源文件隱藏。例如在a和msg的定義前加上static,main.c就看不到它們了。利用這一特性可以在不同的文件中定義同名函數(shù)和同名變量,而不必?fù)?dān)心命名沖突。Static可以用作函數(shù)和變量的前綴,對于函數(shù)來講,static的作用僅限于隱藏,而對于變量,static還有下面兩個作用。

(2)static的第二個作用是保持變量內(nèi)容的持久。存儲在靜態(tài)數(shù)據(jù)區(qū)的變量會在程序剛開始運(yùn)行時就完成初始化,也是唯一的一次初始化。共有兩種變量存儲在靜態(tài)存儲區(qū):全局變量和static變量,只不過和全局變量比起來,static可以控制變量的可見范圍,說到底static還是用來隱藏的。雖然這種用法不常見,但我還是舉一個例子。

復(fù)制代碼 代碼如下:

#include <stdio.h>

int fun(void){
    static int count = 10;    // 事實上此賦值語句從來沒有執(zhí)行過
    return count--;
}

int count = 1;

int main(void)
{   
    printf("global/t/tlocal static/n");
    for(; count <= 10; ++count)
        printf("%d/t/t%d/n", count, fun());   

    return 0;
}


 程序的運(yùn)行結(jié)果是:

global          local static

1               10

2               9

3               8

4               7

5               6

6               5

7               4

8               3

9               2

10              1

(3)static的第三個作用是默認(rèn)初始化為0。其實全局變量也具備這一屬性,因為全局變量也存儲在靜態(tài)數(shù)據(jù)區(qū)。在靜態(tài)數(shù)據(jù)區(qū),內(nèi)存中所有的字節(jié)默認(rèn)值都是0x00,某些時候這一特點(diǎn)可以減少程序員的工作量。比如初始化一個稀疏矩陣,我們可以一個一個地把所有元素都置0,然后把不是0的幾個元素賦值。如果定義成靜態(tài)的,就省去了一開始置0的操作。再比如要把一個字符數(shù)組當(dāng)字符串來用,但又覺得每次在字符數(shù)組末尾加'/ 0'太麻煩。如果把字符串定義成靜態(tài)的,就省去了這個麻煩,因為那里本來就是'/0'。不妨做個小實驗驗證一下。

復(fù)制代碼 代碼如下:

#include <stdio.h>

int a;

int main(void)
{
    int i;
    static char str[10];

    printf("integer: %d;  string: (begin)%s(end)", a, str);

    return 0;
}


程序的運(yùn)行結(jié)果如下
復(fù)制代碼 代碼如下:

integer: 0; string: (begin)(end)

最后對static的三條作用做一句話總結(jié)。首先static的最主要功能是隱藏,其次因為static變量存放在靜態(tài)存儲區(qū),所以它具備持久性和默認(rèn)值0。

以上內(nèi)容出自博客園Mr. Write之手,寫的相當(dāng)清晰易懂,存檔方便復(fù)習(xí)。

下面是中興通訊2012校招筆試題的一道問答題:

1. static全局變量與普通的全局變量有什么區(qū)別 ?

  全局變量(外部變量)的說明之前再冠以static 就構(gòu)成了靜態(tài)的全局變量。

  全局變量本身就是靜態(tài)存儲方式, 靜態(tài)全局變量當(dāng)然也是靜態(tài)存儲方式。 這兩者在存儲方式上并無不同。

  這兩者的區(qū)別在于非靜態(tài)全局變量的作用域是整個源程序, 當(dāng)一個源程序由多個源文件組成時,非靜態(tài)的全局變量在各個源文件中都是有效的。 而靜態(tài)全局變量則限制了其作用域, 即只在定義該變量的源文件內(nèi)有效, 在同一源程序的其它源文件中不能使用它。由于靜態(tài)全局變量的作用域局限于一個源文件內(nèi),只能為該源文件內(nèi)的函數(shù)公用,因此可以避免在其它源文件中引起錯誤。

  static全局變量只初使化一次,防止在其他文件單元中被引用;  

2.  static局部變量和普通局部變量有什么區(qū)別 ?

   把局部變量改變?yōu)殪o態(tài)變量后是改變了它的存儲方式即改變了它的生存期。把全局變量改變?yōu)殪o態(tài)變量后是改變了它的作用域,限制了它的使用范圍。 

  static局部變量只被初始化一次,下一次依據(jù)上一次結(jié)果值;  

3.  static函數(shù)與普通函數(shù)有什么區(qū)別?

   static函數(shù)與普通函數(shù)作用域不同,僅在本文件。只在當(dāng)前源文件中使用的函數(shù)應(yīng)該說明為內(nèi)部函數(shù)(static修飾的函數(shù)),內(nèi)部函數(shù)應(yīng)該在當(dāng)前源文件中說明和定義。對于可在當(dāng)前源文件以外使用的函數(shù),應(yīng)該在一個頭文件中說明,要使用這些函數(shù)的源文件要包含這個頭文件.

發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表

圖片精選

精品中文字幕av| 国产精品情侣自拍| 国产精品污污网站在线观看| 欧美在线免费看| 中文字幕不卡一区| 欧美日韩免费| 男人天堂手机在线视频| 国产精品一区2区3区| 99久久精品免费精品国产| 国产美女一区视频| 18欧美亚洲精品| 91精品国产一区二区三区| 美女久久网站| 国产一区二区三区视频免费观看| www.av88| 亚洲精品综合久久| aaaaaav| 日本成人超碰在线观看| 91视频免费入口| 97在线精品国自产拍中文| 精品人妻无码一区| 在线成人高清不卡| 亚洲va男人天堂| 成人黄色av播放免费| 亚洲精品系列| 露出调教综合另类| 精品少妇爆乳无码av无码专区| 精品一区二区在线视频| 欧美aa在线视频| 午夜成年女人毛片免费观看| 手机看片国产1024| 欧美最猛性xxxxx免费| 日本丰满少妇做爰爽爽| 欧美午夜精品久久久| 国产成人午夜精品影院观看视频| 大桥未久女教师av一区二区| 欧美三级华人主播| 日韩精品福利| 亚洲人午夜色婷婷| 一区二区三区三区在线| 精精国产xxxx视频在线中文版| 欧美性猛交xxxx乱大交少妇| 国产99对白在线播放| 影音先锋国产资源| 日韩欧美国产综合在线一区二区三区| 国产高清自产拍av在线| 国产精品久久久久9999高清| 欧美体内she精视频| av在线免费播放网址| 亚洲女人18毛片水真多| 欧美在线观看一区二区| 91国语精品自产拍| 国产精品视频导航| 亚洲欧美日韩综合| 在线天堂视频| 国产精品亚洲人在线观看| 香艳视频网站| 日韩精品中文字| 欧美一区二区成人6969| 日本中文字幕观看| 久久久久国产成人精品亚洲午夜| 国产成人久久精品77777最新版本| 国产18无套直看片| 成年美女黄网站色大片不卡| 91九色国产在线播放| 亚洲精品成人悠悠色影视| 国产青青在线视频| 91午夜国产| 青青草原成人在线视频| 伊人久久大香线蕉综合热线| 亚洲精品v亚洲精品v日韩精品| 国产成a人亚洲精| 7777精品伊人久久久大香线蕉完整版| 78精品国产综合久久香蕉| 久久资源免费视频| 粉嫩av性色av蜜臀av网站| 毛片网站在线| 国产精品沙发午睡系列990531| 亚洲一区 二区| 亚洲精品一区二区三区中文字幕| 日韩成人高清| 特级西西444www大精品视频| 综合视频在线观看| 2020日本不卡一区二区视频| 久久综合婷婷| 亚洲永久免费| 国产精品1234区| 一本久久精品一区二区| xxxx 国产| youjizz在线视频| 亚洲成年人网站在线观看| 国产真实乱在线更新| 午夜激情在线观看视频| 久久96国产精品久久99软件| 国产精品178页| 国模人体一区二区| 污污视频免费看| 精品国产三级电影在线观看| 国产一区二区三区亚洲综合| 日韩mv欧美mv国产网站| 亚洲欧美在线网| 日本加勒比一区| 最新天堂资源在线| 激情视频在线观看| 极品久久久久久久| 亚洲色图首页| 国产日韩欧美激情| 美女少妇全过程你懂的久久| 黄色片网站在线免费观看| 欧美制服第一页| 成人欧美精品一区二区| 久久精品美女视频网站| 亚洲精品国产无套在线观| 免费男女羞羞的视频网站中文字幕| 天天爽天天爽天天爽| 成人av在线资源网站| 97视频精彩视频在线观看| 亚洲一二三四区不卡| 国产欧美日韩精品高清二区综合区| 欧美污视频网站| 成人免费看片网址| 影音先峰男人站| 婷婷国产v国产偷v亚洲高清| 丝袜a∨在线一区二区三区不卡| 国内自拍视频在线观看| 交100部在线观看| 婷婷久久一区| 91丨porny丨对白| 午夜精品久久久久久久| 亚洲天堂导航| 在线综合色站| 久久久久久久极品内射| 亚洲视频你懂的| 中文字幕电影在线| av不卡免费看| 午夜天堂精品久久久久| 久久午夜鲁丝片午夜精品| 国产一级大片免费看| 亚洲欧美综合久久久| 91国模少妇一区二区三区| 国产精品久久久久久免费| 色哟哟一区二区| 最新av电影网站| 国产精品久久久久三级| 久久激情五月激情| 欧美一区二区三区的| 国产精品最新在线观看| 97色在线观看免费视频| 户外露出精品视频国产| 91成人精品网站| 色偷偷亚洲第一成人综合网址| 久久精品国产亚洲a∨麻豆| 亚洲成国产人片在线观看| 午夜精彩国产免费不卡不顿大片| 在线观看免费av网| 欧美一区二区三区免费视| 国产成人无码精品| 国产欧美一区二区三区不卡高清| 韩国日本不卡在线| 欧美成人精品一区二区综合免费| 日本精品中文字幕| 亚洲精品555| 成人午夜激情影院| 日韩伦理av| 亚洲精品电影网在线观看| 中文字幕一区二区精品区| 欧美亚洲日本在线观看| 日韩高清中文字幕一区二区| 色无极亚洲影院| 日韩美女在线播放| 麻豆影视在线播放| 不卡在线一区二区| 波多野结衣91| av在线天堂播放| 国产亚洲xxx| 免费自拍视频| 亚洲成人自拍偷拍| 中文字幕另类日韩欧美亚洲嫩草| 亚洲精品成人在线视频| 欧美日韩大片一区二区三区| 国产丰满果冻videossex| 天堂精品视频| 91麻豆精品久久久久蜜臀| 成人中文字幕合集| 波多野结衣91| 男女啪啪在线观看| xxx欧美精品| 91久久精品无码一区二区| 日韩风俗一区 二区| 免费操人视频| 成年人视频在线看| mm131丰满少妇人体欣赏图| 国产h在线观看| 日本视频免费高清一本18| 日韩高清一级| 亚洲成人av在线影院| 一级全黄裸体片| 最新eeuss影院在线观看| 日韩成人免费在线观看| 久久精品美女| 日本一区二区三区dvd视频在线| 亚洲精品无播放器在线播放| 欧美网站大全在线观看| 久久伊人国产| 日韩欧美在线免费观看| 成人在线免费视频观看| 国产日韩中文字幕在线| 一区二区三区在线观看免费视频| av中文字幕在线不卡| 伊人成综合网伊人222| 国产精品无码久久久久一区二区| 亚洲欧美中文另类| 精彩视频一区二区三区| 国产区一区二| 韩日中文字幕第一页| 战狼4完整免费观看在线播放版| 97不卡在线视频| 秋霞毛片久久久久久久久| 91麻豆国产视频| 最大av网站| 国产精品a久久久久| 亚洲最大福利网| 国产视频你懂的| 亚洲狼人综合干| 国产精品超碰| 久久国产精品1区2区3区网页| 国产成人免费在线视频| 免费精品视频一区二区三区| 亚洲一二三四区不卡| 国产精品成人观看视频免费| 国产小视频国产精品| 成人国产精品一级毛片视频| av一卡二卡| 中文字幕42页丝袜| 日韩av系列| 91在线视频在线观看| a国产在线视频| 免费国产麻豆传| 黄色av网址在线| 天天操天天色综合| 亚洲欧美激情小说另类| 91美女福利视频高清| 一本色道久久综合亚洲精品小说| 九热爱视频精品视频| 欧美国产精品一二三| 欧美午夜精品一区二区三区电影| 国产精品无码一区二区桃花视频| 欧美成人短视频| 久久久久免费精品| 999av小视频在线| 日韩经典一区二区三区| 四虎永久在线高清国产精品| 黄色成人在线视频| 免费在线观看a级片| 天堂av在线免费| 中文字幕第21页| 成人免费在线观看| 中文精品在线观看| 一本久道久久综合多人| 一区二区三区四区av| 久久亚洲欧美国产精品乐播| 成年人黄色在线观看| 九七伦理97伦理手机| 国产精品美女久久久久aⅴ国产馆| 一级做a爰片性色毛片视频| 国产精品福利在线观看| 波多野结衣在线网址| 精品国自产拍在线观看| 樱花影视一区二区| 日韩亚洲一区在线| 国产精品亚洲天堂| 成人国产精品av| 国产在线一区二区三区四区| 国产在线播放一区二区三区| 在线欧美小视频| 亚洲免费专区| 亚洲淫成人影院| 91国内视频| 天天操天天干天天玩| 国产精品国产自产拍高清av水多| 国产一级大片免费看| 欧美激情亚洲色图| 亚洲免费在线视频| 不卡的日韩av| 日韩欧美精品一区二区三区| 动漫精品一区一码二码三码四码| 欧美高清视频在线观看| 一级全黄裸体免费视频| 欧美特级黄色片| jizz在线播放| 久久这里只精品最新地址| 欧洲grand老妇人| 日韩在线第七页| av亚洲一区| 欧美成人午夜剧场免费观看| 波多野结衣在线中文| 日韩精品一级毛片在线播放| 成人免费观看毛片| 我看黄色一级片| 亚洲国产精品一区在线观看不卡| www日韩视频| 亚洲天堂网在线观看视频| 亚洲日本一区二区| 日本五十熟hd丰满| 日韩免费av网站| 91久久偷偷做嫩草影院| 欧美自拍视频| 91在线视频导航| fc2ppv完全颜出在线播放| 宅男在线精品国产免费观看| 久久久久久久综合狠狠综合| 天堂亚洲精品| 强乱中文字幕av一区乱码| 日本在线播放视频| 亚洲最大激情网| 国产呦精品一区二区三区网站| 国产欧美一区二区三区久久| 97超碰人人模人人爽人人看| 一区二区三区电影| 亚洲男人的天堂在线观看| 日韩 欧美 综合| 黄色福利视频网站| 久久精品视频99| 日韩欧美专区在线| 亚洲3p在线观看| 久久综合五月| 综合久久国产九一剧情麻豆| 捆绑调教一区二区三区|