欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

C語(yǔ)言static修飾函數(shù)詳細(xì)解析

 更新時(shí)間:2013年08月13日 10:23:31   作者:  
以下是對(duì)C語(yǔ)言中的static修飾函數(shù)進(jìn)行了詳細(xì)的分析介紹,需要的朋友可以過(guò)來(lái)參考下

在C語(yǔ)言中,static的字面意思很容易把我們導(dǎo)入歧途,其實(shí)它的作用有三條。
介紹它的第一條也是最重要的一條:隱藏。
當(dāng)我們同時(shí)編譯多個(gè)文件時(shí),所有未加static前綴的全局變量和函數(shù)都具有全局可見(jiàn)性。為理解這句話,我舉例來(lái)說(shuō)明。我們要同時(shí)編譯兩個(gè)源文件,一個(gè)是a.c,另一個(gè)是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

你可能會(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的作用僅限于隱藏

相關(guān)文章

  • C語(yǔ)言實(shí)現(xiàn)全排列算法模板的方法

    C語(yǔ)言實(shí)現(xiàn)全排列算法模板的方法

    這篇文章主要介紹了C語(yǔ)言實(shí)現(xiàn)全排列算法模板的方法,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2020-02-02
  • C++的頭文件和實(shí)現(xiàn)文件詳解

    C++的頭文件和實(shí)現(xiàn)文件詳解

    這篇文章主要介紹了C++的頭文件和實(shí)現(xiàn)文件詳解的相關(guān)資料,需要的朋友可以參考下
    2015-01-01
  • C語(yǔ)言對(duì)堆排序一個(gè)算法思路和實(shí)現(xiàn)代碼

    C語(yǔ)言對(duì)堆排序一個(gè)算法思路和實(shí)現(xiàn)代碼

    這篇文章主要介紹了C語(yǔ)言對(duì)堆排序一個(gè)算法思路和實(shí)現(xiàn)代碼,堆排序是一種樹(shù)形選擇排序,是對(duì)直接選擇排序的有效改進(jìn),需要的朋友可以參考下
    2014-06-06
  • C語(yǔ)言進(jìn)階數(shù)據(jù)的存儲(chǔ)機(jī)制完整版

    C語(yǔ)言進(jìn)階數(shù)據(jù)的存儲(chǔ)機(jī)制完整版

    這篇文章主要為大家完整的介紹了C語(yǔ)言進(jìn)階數(shù)據(jù)的存儲(chǔ)機(jī)制,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步早日升職加薪
    2022-02-02
  • C語(yǔ)言菜鳥(niǎo)基礎(chǔ)教程之條件判斷

    C語(yǔ)言菜鳥(niǎo)基礎(chǔ)教程之條件判斷

    本文給大家簡(jiǎn)單介紹了下C語(yǔ)言中的條件判斷語(yǔ)句的語(yǔ)法和用法示例,非常簡(jiǎn)潔實(shí)用,有需要的小伙伴可以參考下
    2017-10-10
  • C語(yǔ)言實(shí)現(xiàn)大頂堆的示例代碼

    C語(yǔ)言實(shí)現(xiàn)大頂堆的示例代碼

    最大堆,又稱大根堆(大頂堆)是指根結(jié)點(diǎn)(亦稱為堆頂)的關(guān)鍵字是堆里所有結(jié)點(diǎn)關(guān)鍵字中最大者,屬于二叉堆的兩種形式之一。本文將用C語(yǔ)言實(shí)現(xiàn)大頂堆,感興趣的可以了解一下
    2022-07-07
  • 在C++中加載TorchScript模型的方法

    在C++中加載TorchScript模型的方法

    這篇文章主要介紹了在C++中加載TorchScript模型的方法,本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-02-02
  • 解析內(nèi)存對(duì)齊 Data alignment: Straighten up and fly right的詳解

    解析內(nèi)存對(duì)齊 Data alignment: Straighten up and fly right的詳解

    對(duì)于所有直接操作內(nèi)存的程序員來(lái)說(shuō),數(shù)據(jù)對(duì)齊都是很重要的問(wèn)題.數(shù)據(jù)對(duì)齊對(duì)你的程序的表現(xiàn)甚至能否正常運(yùn)行都會(huì)產(chǎn)生影響
    2013-05-05
  • C++中線程池ThreadPool源碼解析

    C++中線程池ThreadPool源碼解析

    線程池(threadpool)作為五大池之一(內(nèi)存池、連接池、線程池、進(jìn)程池、協(xié)程池),線程池的應(yīng)用非常廣泛,不管事客戶端程序還是后臺(tái)服務(wù)端,都是提高業(yè)務(wù)處理能力的必備模塊
    2022-09-09
  • 詳解C語(yǔ)言結(jié)構(gòu)體的定義和使用

    詳解C語(yǔ)言結(jié)構(gòu)體的定義和使用

    這篇文章主要為大家介紹了C語(yǔ)言結(jié)構(gòu)體的定義和使用,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來(lái)幫助
    2021-12-12

最新評(píng)論