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.new和delete的用法
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)