C++對C語言的加強-型別加強
1. register 關鍵字增強
register關鍵字 請求編譯器讓變數直接放在暫存器裡面,速度快。
在c語言中 register修飾的變數 不能取位址;在C++中可以取位址。
2. 變數偵測增強
在C語言中,重複定義多個同名的全域變數是合法的, 在C++中,不允許定義多個同名的全域變數。
3. C++中所有的變數和函數都必須有型別
在C語言中
int f( ); 表示傳回值為int,接受任意參數的函式
int f(void); 表示傳回值為int,接受任意參數的函式
int f(void); 表示傳回值為int的無參函數
在C++中
int f( ); 和int f(void)具有相同的意義,都表示傳回值為int的無參函數
4. 三目運算子功能增強
範例:a
區別:C語言回傳變數的值;C++語言是傳回變數本身
C語言中的三目運算子回傳的是變數值,不能作為左本身
C語言中的三目運算子回傳的是變數值,不能作為左值使用
C++中的三目運算子可直接傳回變數本身,因此可以出現在程式的任何地方
注意:三目運算子可能傳回的值中如果有一個是常數值,則不能作為左值使用(a
C語言如何支援類似C++的特性呢?
====>當左值的條件:要有記憶體空間;C++編譯器幫助程式設計師取了一個位址而已
1.const 限定符認識
作用:把一個物件轉換成一個常數,只讀。
int main() { const int a;// 1 第1个第2个意思一样 代表一个常整形数 int const b;// 2 const int *c; // 3 第3个 c是一个指向常整形数的指针(所指向的内存数据不能被修改,但是本身可以修改) int * const d; //4 第4个 d 常指针(指针变量不能被修改,但是它所指向内存空间可以被修改) const int * const e ; //5 第5个 e一个指向常整形的常指针(指针和它所指向的内存空间,均不能被修改) return 0; }
const int bufSize=512;bufSize初始化之后就无法进行修改了。 1)在C++中,const符号表原理:存储方式是符号表即key value key value bufSize 512
:const常數是由編譯器處理的,提供類型檢測和作用域檢查,巨集定義由預處理器處理,單純的文字替換。