C++對C語言的加強——類型加強
1. register 關鍵字增強
register關鍵字 請求編譯器讓變數直接放在寄存器裡面,速度快。
在c語言中 register修飾的變數 不能取地址;在C++中可以取地址。
2. 變數檢測增強
在C語言中,重複定義多個同名的全域變數是合法的, 在C++中,不允許定義多個同名的全域變數。
3. C++中所有的變數和函數都必須有類型
在C語言中
int f( ); 表示傳回值為int,接受任意參數的函數
int f(void); 表示傳回值為int的無參函數
在C++中
int f( ); 和int f(void)具有相同的意義,都表示傳回值為int的無參函數
4. 三目運算子功能增強
例子:a< b ? a : b )= 30;
區別:C語言返回變數的值; C++語言是返回變數本身
C語言中的三目運算子返回的是變數值,不能作為左值使用
C++中的三目運算子可直接返回變數本身,因此可以出現在程式的任何地方
注意:三目運算子可能返回的值中如果有一個是常量值,則不能作為左值使用 (a < b ? 1 :b )= 30;
C語言如何支援類似C++的特性呢?
====>當左值的條件:要有記憶體空間;C++編譯器協助程式員取了一個地址而已
1.const 限定符認識
作用:把一個對象轉化成一個常量,唯讀。
int main(){const int a;// 1 第1個第2個意思一樣 代表一個常整形數int const b;// 2const 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 valuekey valuebufSize 512
2. C++編譯器對const常量的處理原理:當常量聲明時,是在符號表放入常量;使用常量時時直接以符號表中的值替換。
結論:C語言與C++中的const變數區別
C語言中const變數是唯讀變數,有自己的儲存空間
C++中的const常量
可能分配儲存空間,也可能不分配儲存空間
當const常量為全域,並且需要在其它檔案中使用
當使用&操作符取const常量的地址
2)const 與 #define異同之處
相同:都可以作為常量使用
異:const常量是由編譯器處理的,提供類型檢測和範圍檢查,宏定義由前置處理器處理,單純的文本替換。
以上就是C++複習要點總結(一)的內容,更多相關內容請關注topic.alibabacloud.com(www.php.cn)!