2010-02-18 87 views

回答

2

在函數外部,靜態使得它具有文件範圍。例如:

int a_function(int x) { ... } 

該函數將具有全局鏈接,並且可以被任何其他目標文件訪問。你只需要聲明它使用它,因爲通常在頭文件中完成:

int a_function(int x); 

然而,如果在定義中使用靜態的,那麼函數是可見的只有定義它的源文件:

static int a_function(int x) { ... } 

在這種情況下,其他目標文件不能訪問此功能。同樣適用於變量:

static int x; 

這使得x成爲全局變量,僅在其源文件中可見。「靜態結構」本身並不做任何事情,但考慮到這句法:

struct { 
    int x; 
    int y; 
} p1, p2; 

此聲明兩個全局變量(p1和p2),每一個「匿名」結構類型的。如果添加靜態:

static struct { 
    int x; 
    int y; 
} p1, p2; 

然後靜態適用於p1和p2,使其僅在其源文件中可見。

0

我不是C程序員,但如果C語言中的static表示類似於其他語言的其他語言,我使用STATIC STRUC,這意味着該類在該類的所有實例中都是常見的。

說我有一個名爲Z的類變量。通常的行爲是這個變量的值是特定於某個類的特定實例,但是當它是靜態的時候,該類的所有實例共享相同的值Z每時每刻。

我不知道這是如何適用於C,是不是C對象較少?

1

static告訴函數或數據元素只在當前編譯的範圍內是已知的。另外,如果將static關鍵字與函數本地的變量一起使用,它允許在該函數的連續調用之間保留最後一個變量值。

所以,如果你說:

static struct ... 

在源文件中沒有其他的源文件可以使用結構類型。甚至沒有extern聲明。但如果你說:

struct ... 

然後其他源文件可以通過extern聲明訪問它。