C++對(duì)C的升級(jí) 1、 聲明定義 C++中更強(qiáng)調(diào)語(yǔ)言的實(shí)時(shí)性,所有的變量都可在使用時(shí)再定義。 例:for(int i = 0; i < 10; i++) 2、 register關(guān)鍵字的升級(jí) 在C++中依然支持register關(guān)鍵字,并且可以取得register變量的地址,在進(jìn)行取地址時(shí)編譯器會(huì)將該變量?jī)?yōu)化到內(nèi)存中 3、 const關(guān)鍵字 在C++中,編譯器會(huì)為const常量分配空間,但是不會(huì)使用其內(nèi)存空間的值 4、 內(nèi)存分配與釋放 C++中的動(dòng)態(tài)內(nèi)存分配:C++中通過(guò)new關(guān)鍵字進(jìn)行動(dòng)態(tài)內(nèi)存申請(qǐng); C++中的動(dòng)態(tài)內(nèi)存申請(qǐng)是基于類型進(jìn)行的; Delete關(guān)鍵字用于內(nèi)存釋放 例:數(shù)組的內(nèi)存分配: 一維數(shù)組:char *ptr = new char[100]; 二維數(shù)組:char (*ptr)[2] = new char[2][2]; 三維數(shù)組:char (*ptr)[6][6] = new char[6][6][6];
New與malloc的區(qū)別: new關(guān)鍵字是C++的一部分,malloc是由C庫(kù)提供的函數(shù); new以具體類型為單位進(jìn)行內(nèi)存分配,malloc是以字節(jié)為單位進(jìn)行內(nèi)存分配; new在申請(qǐng)單個(gè)類型變量時(shí)可進(jìn)行初始化,malloc不具備初始化的特性;
5、 引用 VS 指針 (1)引用的定義:int a = 1; int &b = a;此時(shí)我們稱b是a的別名,即為引用; 注意:定義引用時(shí)一定要初始化,指明該引用變量是誰(shuí)的別名; Const引用是指向const變量的引用 (2)函數(shù)傳參:按引用傳參 引用傳遞方式是在函數(shù)定義時(shí)在形參前面加上引用運(yùn)算符,如:void swap(int &a,int &b); 按值傳遞方式容易理解,但是形參值的改變不能對(duì)實(shí)參產(chǎn)生影響; 地址傳參方式通過(guò)形參的改變使相應(yīng)的實(shí)參改變,但程序容易出錯(cuò)且難以閱讀; 引用作為參數(shù)對(duì)形參的任何操作都能改變相應(yīng)的實(shí)參的數(shù)據(jù),又使函數(shù)調(diào)用顯得方便自然 (3)函數(shù)返回值:引用作為函數(shù)返回值 引用的另一個(gè)作用適用于返回引用的函數(shù); 函數(shù)返回引用的一個(gè)主要目的是將函數(shù)放在賦值運(yùn)算符的左邊; 注意:不能返回對(duì)局部變量的引用; (4)引用與指針的區(qū)別 引用訪問(wèn)一個(gè)變量是直接訪問(wèn),而指針是間接訪問(wèn); 引用是一個(gè)變量的別名,本身不單獨(dú)分配自己的內(nèi)存空間,而指針有自己的內(nèi)存空間; 引用一經(jīng)初始化不能再引用其他變量,而指針可以; 注:盡可能使用引用,不得已時(shí)使用指針!
|
新聞熱點(diǎn)
疑難解答
圖片精選
網(wǎng)友關(guān)注