C++對C的升級

1.聲明和定義
我們在c語言中,通常把變量的聲明放在文件開頭,即所有要用到的變量統一定義,而在c++中,我們可以把變量的定義放在快要用到的時候,例如,for語句,在c中我們是
int i = 3;
for(i = 0; i < 3; i++)
{}
而在c++中,我們可以for(int  i = 0;i < 3; i++ )
2.register 關鍵字的升級
在C語言中,register的作用是修飾一個變量,該變量經常被程序訪問,所以希望把該變量放在寄存器中,減少程序訪問該變量需要的時間,大大提高程序運行效率,因爲是放在寄存器中,而&是得到內存的地址,所以在C語言中,我們是無法對一個用register修飾的變量進行取地址操作的,但在c++中,我們是可以的,因爲編譯器會優化該變量,將變量重新放回到內存中。
3.const關鍵字
c語言中,我們用const修飾的叫做只讀變量,readonly,即我們不能通過變量名對空間的值進行修改,但是空間對應的值是可以修改的,比如下面這個例子
const int num = 3;
我們不能  num++;
但是我們可以通過下面方法實現num自加
int * ptr = &num;
(*ptr)++;
這個時候打印num的值會發現num++
而在c++中我們是無法這樣做的,用const修飾後他就是一個常量,因爲在c++中,編譯器要求做到const的對應,如果你之前用const修飾的變量num,之後要用指針指向這個地址的話就必須用const*,所以地址對應的值就無法變化了。
4.new/delete  內存的分配與釋放
在c語言中,我們是用malloc進行內存的分配,例如
char * ptr = (char *)malloc(sizeof(char) *100);
釋放的時候,我們用free ptr;
而在c++中,我們是char * ptr = new char [100];
用delete []ptr來釋放;
動態內存分配的區別
{
new以具體類型爲單位進行內存分配,malloc只能以字節爲單位進行分配
new關鍵字是c++的一部分,malloc是由c庫提供的函數
new申請單個類型變量的時間進行初始化
}
當我們申請二維數組時,我們需要如下操作
int (*pp)[2] = new int [2][2];
5.引用
引用時c++提出的一個新的概念,他比指針安全而且使用簡單。
我們使用引用時一定要初始化,這是跟指針差不多的。
指針和引用的區別:
1.引用訪問一個常量是直接訪問,而指針是間接訪問
2.引用是一個變量的別名,本身不單獨分配自己的內存空間,但是指針有自己的空間
3引用一經初始化不能再引用其他變量,而指針可以。
今天先講這麼點,以後補充
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章