const變量在C和C++之中還是有不少區別的。在C中,const修飾的變量一般只當成“只讀的”,而不是將其作爲一個常量。因此如果像下面這樣聲明
const int SIZE; // legal in C
不過在C++中,const修飾的變量都是常量,這和直接使用0,1,2...以及字符串”open file error!“一樣,所以在聲明的時候都需要賦值。
如果只是這樣聲明
const int SIZE; //illegal in C++
是錯誤的。必須這樣聲明:
const int SIZE = 100; //legal in C++
由於const修飾的變量在C中不能直接當成常量,所以如果在全局聲明數組,不能使用const變量做下標。比如
const int SIZE = 100;
char buf[SIZE]; // illegal in C, but legal in C++
如果在C語言這樣用就會報錯——error: variably modified ‘buf’ at file scope。但是如果在C++中由於SIZE會當成常量存儲在堆棧特殊的位置,所以可以正確使用。