在C結構體中有一個「靜態」成員是合法的嗎?C中結構體中「靜態」的使用C
例如
struct my_struct {
int x;
static int y;
};
如果確實是合法的,那麼什麼是「靜態」關鍵字的使用意味着什麼?
在C結構體中有一個「靜態」成員是合法的嗎?C中結構體中「靜態」的使用C
例如
struct my_struct {
int x;
static int y;
};
如果確實是合法的,那麼什麼是「靜態」關鍵字的使用意味着什麼?
不,這在C中沒有任何意義,但它在C++中是有效的。
不,不是在C
(您可以在一個C++
結構的靜態成員。)
好像你問後面的靜態成員的直覺。 靜態成員意味着每個類型一個而不是每個實例一個。 在你的情況,如果你有
struct my_struct a, b;
然後a
和b
每個將有自己的x
但將共享一個共同y
。靜態成員函數也是如此。但是像這樣說,這不適用於C,但它對C++和Java也有作用。
你可能會被這樣一個事實弄糊塗,即Static不是用於Java,C#等語言(或C++)的相同目的。這篇文章介紹的靜態徹底C'S用法:
你不能使用static
符在structure
...
structure
變量不能一個structure
和static
符內部初始化初始化變量爲0 ..
此行爲在C中是不允許的..
關於彙編Co mpiler拋出錯誤; 因爲每當編譯器遇到static關鍵字,它就會生成代碼來初始化(零或明確指定的值)數據段或BSS段中的靜態變量。 在我們的場景中,內存不會被分配給結構聲明,所以編譯器會拋出錯誤。
我不禁感到它會花費不到30秒來測試這個問題... http://www.ideone.com/9rsuX – forsvarir 2011-05-16 05:12:27