可能重複:
What does 「static」 mean in a C program?
Static vs global什麼是 「靜態」 在C平均`
什麼是 「靜態」 的意思是在C,給下面的例子:「靜結構........「?
這和沒有「靜態」的「struct ......」之間有什麼區別?
可能重複:
What does 「static」 mean in a C program?
Static vs global什麼是 「靜態」 在C平均`
什麼是 「靜態」 的意思是在C,給下面的例子:「靜結構........「?
這和沒有「靜態」的「struct ......」之間有什麼區別?
在函數外部,靜態使得它具有文件範圍。例如:
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,使其僅在其源文件中可見。
我不是C程序員,但如果C語言中的static
表示類似於其他語言的其他語言,我使用STATIC STRUC,這意味着該類在該類的所有實例中都是常見的。
說我有一個名爲Z的類變量。通常的行爲是這個變量的值是特定於某個類的特定實例,但是當它是靜態的時候,該類的所有實例共享相同的值Z每時每刻。
我不知道這是如何適用於C,是不是C對象較少?
static告訴函數或數據元素只在當前編譯的範圍內是已知的。另外,如果將static關鍵字與函數本地的變量一起使用,它允許在該函數的連續調用之間保留最後一個變量值。
所以,如果你說:
static struct ...
在源文件中沒有其他的源文件可以使用結構類型。甚至沒有extern聲明。但如果你說:
struct ...
然後其他源文件可以通過extern聲明訪問它。
「搜索引擎」是什麼意思?很多次,請看你跳躍。 http://stackoverflow.com/questions/572547/what-does-static-mean-in-a-c-program – 2010-02-18 08:43:28