2013-06-19 193 views
1

如果我們在main函數之前的開頭聲明瞭一個變量而沒有給出EXTERN關鍵字,它將被視爲一個靜態全局變量(只能在該文件中訪問)或者我們能否從其他變量訪問它文件? 例如:c中的全局變量

#include<stdio.h> 
int k; 
main() 
{ 

} 

回答

4

變量k將在技術上提供給其他文件(模塊),但除非其他文件有一個extern int k聲明,他們不會知道的變量,編譯時錯誤將指示k在其他文件中未知。

+0

因此,deoes它工作作爲一個靜態的全局變量? – user1762571

+1

使其可見的通常方法是在頭文件中聲明'extern int k;'以由任何需要查看它的任何'* .c'文件來''include'd。 (你通常不會在與main()相同的源文件中定義的東西)。 –

+0

@KeithThompson,yes(+1)。 – lurker

1

外部定義和聲明,默認初始化爲零。僅

int k; 

外部聲明,定義並初始化一些別的地方

extern int k; 

外部定義,初始化和申報

int k = 2; 
0
static int k; 

它告訴編譯器的變量k accessable在文件scocpe,無法到達外面。

extern int k; 

它告訴鏈接器變量k鏈接到另一個文件中的變量k。

int k; 

它是全局範圍,不能在兩個文件中聲明兩次。