C++總結(jié)(1)

1.const int *p與const * int p的區(qū)別:

int main (){
int a =5,b =6;
const int *p1 = &a;//指針p1指向的是const int 類型
//(*p1)++;                //error,指針p1指向的是常量,常量值不能修改

int const*p2 = &a;//指針p2指向的也是const int 類型
//(*p2)++;                //error,指針p2指向的是常量,常量值不能修改


int *const p3 = &a;//指針p3指向的是int 類型,它本身是const類型
//p3 = &b                  //ok,指針p3指向的是變量(int型)



}

2.有參宏問題:

1)宏只是簡單的替換,替換之后可能會出現(xiàn)優(yōu)先級的問題,通過將宏的參數(shù)用括號括起來可以修復(fù)此問題
2)宏的參數(shù)使用自增自減運算的時候,會出現(xiàn)問題,使用內(nèi)聯(lián)函數(shù)可以解決此問題;

上面兩者的對比:

const定義的有類型,define定義的沒有類型;
const在編譯的時候分配內(nèi)存,define在編譯的時候不分配內(nèi)存,只是進行替換

const定義的常變量的作用域范圍為該變量的作用域范圍,
define定義的常變量的作用域范圍為它的定義點到程序結(jié)束,或者用undefine取消

3.newdelete的用法

new int ;開辟一個存放整數(shù)的存儲空間,返回一個指向該空間的地址(指針)(int *型),
new int (100)開辟一個存放整數(shù)的存儲空間,并指定初始值為100,返回一個指向該空間的地址
new int [100]開辟一個存放100個整型字節(jié)大小的空間,并返回一個指向該空間的地址
obj *objects = new obj [100]創(chuàng)建100個動態(tài)對象
delete [] objects;

int *pbuf = new int [15]
delete [] pbuf

int *pNum = new int ('hello')分配一個整形空間并初始化
delete pNum

4.在c語言中函數(shù)重名就會出現(xiàn)編譯錯誤,而在C++中:

1):函數(shù)名可以same
2):參數(shù)個數(shù),類型,參數(shù)順序必須不同

void fun (int n1,int n2,int n3,int n4,int n5)
{}
fun(1,2);//如果沒有給出后續(xù)參數(shù),則上面的n3,n4,n5必須賦予初值(比如說都賦予了0),左邊才可以這么寫,此時就默認為fun(1,2,0,0,0)

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容