即使分配了空間也不會用儲存空間裡面的內容,只會使用符號表的值。
再舉個例子:
1 constint a=10上面的**在c中會報錯「無法確定陣列長度」,因為在c中const只是個唯讀變數,本質上還是變數,有儲存空間,定義陣列長度用變數當然會出錯了。;2 constint b=20;3
int c[a+b];
但在c++中卻可以編譯通過,因為c++對const做了加強,使得const是真正意義上的常量。
#define只是在編譯前(預處理)
進行普通的文字替換,沒有作用域檢查!
1 #include2usingnamespace std;
3int
f()6
intg()
10#define b 1
11int
main()
12
這個**第4行會出錯「[error] 'b' was not declared in this scope
」,b沒有定義,說明#define編譯前進行簡單文字替換時,只替換#define 下面的所有,位於#define上面的則沒有替換。
const 則由編譯器處理,有作用域檢查和型別檢查
1 #include2usingnamespace std;
3int
f()6}7
intmain()
8
#define可以用 #undef 限
定作用域,不過有點麻煩:
1如:intg()
1但c中上述**會出錯,三目運算子不能返回變數。intmain()
2
C到C 的公升級
c與c 的關係 1.c 繼承了所有的c特性 2.c 在c的基礎上提供了更多的語法和特性 3.c 的設計目標是執行效率與開發效率的統一 c 對c的加強 1.c 中更強調語言的 實用性 所有的變數都可以在需要使用的時候再定義 for int i 0 i 10 i c 編譯器不報錯 注意 c語言中的變數都...
c到c 的公升級
c 繼承了c的所有特性,c 在c的基礎上同時增加了許多新的語法和特性,c 的目標是實現執行效率與開發效率相統一。c 中更加強調語言的實用性,所有變數可在使用的時候再定義。例如 include int main int argc,char argv printf c d n c printf end....
C到C 的公升級
c 的加強主要表現在 型別的加強 物件導向支援 1 變數定義 c 更強調語言的實用性,所有的變數都可以再需要使用的時候再定義,c語言中的變數都必須在作用域開始的位置定義 int c 0 for int i 1 i 3 i register 關鍵字請求編譯器將區域性變數儲存與暫存器中 早期的c語言編譯...