可能重複:
Declaring an array with a non-constant size variable範圍不變和字符數組
這是我的代碼:
const int xsize=150;
char Hey[xsize];
我不明白爲什麼我不能宣佈我的新數組使用上面的常量。 任何人都可以幫忙嗎?
可能重複:
Declaring an array with a non-constant size variable範圍不變和字符數組
這是我的代碼:
const int xsize=150;
char Hey[xsize];
我不明白爲什麼我不能宣佈我的新數組使用上面的常量。 任何人都可以幫忙嗎?
這不是有效的C89代碼。即使變量恰好爲const
,也不能聲明具有可變大小的數組。
如果你將它作爲#define
而不是const int
,它會起作用。不過,它在C99中有效。 GCC和其他編譯器也提供它作爲C89模式的擴展。
因爲const
不會創建常量。它創建一個只讀對象。
對象和常量的區別在於對象有一個特定的內存位置,常量只能在源代碼中生存。
在C89中,數組大小應該是一個常量表達式。 A const
變量不是一個常量表達式。要做到這一點,你必須使用C99中的VLA。
@Kos謝謝,糾正。 –
GCC允許在C++中使用'-std = gnu ++ 98'(缺省爲或仍然是?)或者使用-std = gnu ++ 11'作爲語言擴展。 – Kos
注意:它只是在塊範圍內有效的C99,在文件範圍內,您仍然需要一個_constant表達式_作爲大小。 –