c語言中的static和extern關鍵字總結

 

1、  概念基礎:

局部變量:函數內部定義的變量(包括定義在函數內部複合語句中的變量)。

全局變量:定義在函數外部的變量。

作用域:任何標識符(包括變量、函數名、符號常量及新的數據名)都有它的作用範圍,此範圍稱爲該標識符的作用域。比如符號常量的作用域是從定義符號常量的地方開始到包含這個#define命令(作用於該符號常量)的文件末尾或者遇到#undef命令(作用於該符號常量)爲止。

<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />

 

2、  對於變量:

static關鍵字static可以用於修飾局部變量以擴展局部變量的生存期,被static關鍵字修飾的局部變量的生存期爲:在調用該變量所在的函數前已生成,直到程序退出才消亡,因此在調用該局部變量所在的函數後該變量仍然存在並保持最後使用的值。雖然static關鍵字可以改變局部變量的生存期,但是不能改變局部變量的作用域,該局部變量仍然只能在定義它的函數中使用。

        static關鍵字也可可用於修飾全局變量,此時它的作用在於限制該全局變量的作用域,只能在定義該全局變量的文件中才能使用。

 

extern關鍵字:只能用於擴展沒有被static關鍵字修飾的全局變量。默認情況下全局變量只能在定義它的文件中使用(從定義該全局變量開始到所在文件的文件尾),但如果在另一個文件中將這個變量聲明爲外部變量,那麼這個變量的作用域將被擴展到另外一個文件中。也可以在定義全局變量之前聲明該變量,從而在文件中可以在定義該全局變量前使用該全局變量。

 

3、  對於函數:

static關鍵字:在定義函數時在函數首部的最左邊加上static可以把該函數聲明爲內部函數(又叫靜態函數),這樣該函數就只能在其定義所在的文件中使用,如果在不同的文件中有同名的內部函數,則互不干擾。

 

extern關鍵字:在定義函數時如果在函數首部的最左端冠以關鍵字extern,則表示此函數是外部函數,可供其他文件調用。C語言規定,如果在定義函數時省略extern,則隱含爲外部函數。

        在文件中要調用其他文件中的外部函數,則需要在文件中用extern聲明該外部函數,然後就可以使用。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章