欧美一级特黄大片做受成人-亚洲成人一区二区电影-激情熟女一区二区三区-日韩专区欧美专区国产专区

static的作用


static的作用

成都創(chuàng)新互聯(lián)是專業(yè)的洪湖網(wǎng)站建設(shè)公司,洪湖接單;提供成都網(wǎng)站設(shè)計(jì)、做網(wǎng)站、成都外貿(mào)網(wǎng)站建設(shè)公司,網(wǎng)頁(yè)設(shè)計(jì),網(wǎng)站設(shè)計(jì),建網(wǎng)站,PHP網(wǎng)站建設(shè)等專業(yè)做網(wǎng)站服務(wù);采用PHP框架,可快速的進(jìn)行洪湖網(wǎng)站開(kāi)發(fā)網(wǎng)頁(yè)制作和功能擴(kuò)展;專業(yè)做搜索引擎喜愛(ài)的網(wǎng)站,專業(yè)的做網(wǎng)站團(tuán)隊(duì),希望更多企業(yè)前來(lái)合作!

在C語(yǔ)言中,static的字面意思很容易把我們導(dǎo)入歧途,其實(shí)它的作用有三條。

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

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

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

char a = 'A'; 
// global variable 
void
 msg()  
{ 
    printf("Hello\n");  
}  
下面是main.c的內(nèi)容 
int main(void) 
{     
   extern char a;    // extern variable must be declared before use 
    printf("%c ", a); 
    msg(); 
    
    return 0; 
}

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

A Hello

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

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

 

(2)static的第二個(gè)作用是保持變量?jī)?nèi)容的持久。

存儲(chǔ)在靜態(tài)數(shù)據(jù)區(qū)的變量會(huì)在程序剛開(kāi)始運(yùn)行時(shí)就完成初始化,也是唯一的一次初始化。共有兩種變量存儲(chǔ)在靜態(tài)存儲(chǔ)區(qū):全局變量和static變量,只不過(guò)和全局變量比起來(lái),static可以控制變量的可見(jiàn)范圍,說(shuō)到底static還是用來(lái)隱藏的。雖然這種用法不常見(jiàn),但我還是舉一個(gè)例子。

 

#include<stdio.h> 
 
int fun(void)
{ 
   static int count = 10;    //事實(shí)上此賦值語(yǔ)句從來(lái)沒(méi)有執(zhí)行過(guò)
 
    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的第三個(gè)作用是默認(rèn)初始化為0。

其實(shí)全局變量也具備這一屬性,因?yàn)槿肿兞恳泊鎯?chǔ)在靜態(tài)數(shù)據(jù)區(qū)。在靜態(tài)數(shù)據(jù)區(qū),內(nèi)存中所有的字節(jié)默認(rèn)值都是0x00,某些時(shí)候這一特點(diǎn)可以減少程序員的工作量。比如初始化一個(gè)稀疏矩陣,我們可以一個(gè)一個(gè)地把所有元素都置0,然后把不是0的幾個(gè)元素賦值。如果定義成靜態(tài)的,就省去了一開(kāi)始置0的操作。再比如要把一個(gè)字符數(shù)組當(dāng)字符串來(lái)用,但又覺(jué)得每次在字符數(shù)組末尾加’\0’太麻煩。如果把字符串定義成靜態(tài)的,就省去了這個(gè)麻煩,因?yàn)槟抢锉緛?lái)就是’\0’。不妨做個(gè)小實(shí)驗(yàn)驗(yàn)證一下。

#include <stdio.h> 
int a; 
int main(void) 
{ 
    int i; 
    static charstr[10]; 
  printf("integer: %d;  string: (begin)%s(end)", a, str; 
    return 0; 
}

程序的運(yùn)行結(jié)果如下

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

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

本文名稱:static的作用
分享網(wǎng)址:http://aaarwkj.com/article8/gpigop.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供營(yíng)銷型網(wǎng)站建設(shè)、外貿(mào)網(wǎng)站建設(shè)、網(wǎng)站維護(hù)、虛擬主機(jī)、全網(wǎng)營(yíng)銷推廣、靜態(tài)網(wǎng)站

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)

網(wǎng)站托管運(yùn)營(yíng)
中文字幕在线不卡精品视频| 国精品午夜福利视频不卡| 老司机精品成人免费视频| 亚洲国产成人精品女人| 美女性生活免费视频网站 | av成人综合在线资源站| 国产毛毛片一区二区三区| 最新国产情侣夫妻激情| 国产精品自拍av一区二区| 国产一区二区精品不卡| 91老熟女露脸嗷嗷叫| 国产一区二区高清不卡| av黄色成人在线观看| 国产成人午夜视频免费一区| 国产精品久久高清免费| 欧美大片免费在线播放| 国产亚洲欧美日韩中文字幕| 久久日韩制服丝袜人妻| 亚洲成人精品一区二区| 日本一区二区欧美亚洲国产| 日本午夜理论视频在线播放| 精品一区二区三区在线观看国产| 午夜91激情福利视频| 漂亮人妻被中出中文字幕| 东京一区二区三区四区黄片| 国产黄色片网站在线看| av黄色在线播放网页| 91精品国产高清一区二区性色| 国产一区二区不卡自拍| 婷婷网色偷偷亚洲男人| 91人妻互换一区二区| 久久亚洲中文字幕精品熟女| 国产精品自拍激情在线观看| 欧美日本午夜福利在线观看| 色婷婷国产精品久久包臀| 国产成人综合亚洲国产| 99精品欧美一区二区三区视频| 国产剧免费看视频网站成人| 五月婷婷六月丁香俺来也| 高清免费欧美大片在线观看| 亚洲精品一级二级三级|