2011-05-16 99 views
15

在C結構體中有一個「靜態」成員是合法的嗎?C中結構體中「靜態」的使用C

例如

struct my_struct { 
    int x; 
    static int y; 
}; 

如果確實是合法的,那麼什麼是「靜態」關鍵字的使用意味着什麼?

+12

我不禁感到它會花費不到30秒來測試這個問題... http://www.ideone.com/9rsuX – forsvarir 2011-05-16 05:12:27

回答

16

不,這在C中沒有任何意義,但它在C++中是有效的。

7

不,不是在C

(您可以在一個C++結構的靜態成員。)

1

好像你問後面的靜態成員的直覺。 靜態成員意味着每個類型一個而不是每個實例一個。 在你的情況,如果你有

struct my_struct a, b; 

然後ab每個將有自己的x但將共享一個共同y。靜態成員函數也是如此。但是像這樣說,這不適用於C,但它對C++和Java也有作用。

3

你可能會被這樣一個事實弄糊塗,即Static不是用於Java,C#等語言(或C++)的相同目的。這篇文章介紹的靜態徹底C'S用法:

What does "static" mean?

0

你不能使用static符在structure ...

structure變量不能一個structurestatic符內部初始化初始化變量爲0 ..

此行爲在C中是不允許的..

-1

關於彙編Co mpiler拋出錯誤; 因爲每當編譯器遇到static關鍵字,它就會生成代碼來初始化(零或明確指定的值)數據段或BSS段中的靜態變量。 在我們的場景中,內存不會被分配給結構聲明,所以編譯器會拋出錯誤。