-
基本數(shù)據(jù)類型的引用
結(jié)構(gòu)體類型的引用
指針類型的引用
引用作函數(shù)參數(shù)
?
查看全部 -
new和delete
查看全部 -
釋放內(nèi)存注意事項
查看全部 -
int?main(void){ int?*p=new?int; p=20; or int?*p=new?int(20);????//初始化設(shè)置 delete?p; p=null; if(null?==?p){????????//檢查可用內(nèi)存 ????system("pause"); ????return?0; } int?*p?=?new?int[100]????//調(diào)用內(nèi)存塊 p[0]=10;???????? p[1]=20; ... delete[]?p;????//無[]只釋放第一個內(nèi)存 p=null;
查看全部 -
內(nèi)存管理
申請內(nèi)存:new????????????//運算符 new, delete
釋放內(nèi)存:delete
//ex: int?*p?=?new?int; delete?p; int?*arr=?new?int[10]; delete[]?arr;
無空余內(nèi)存
int?*p?=?new?int[1000]; if(NULL?==?p){????//檢查是否成功 ????//內(nèi)存分配失敗 }
釋放內(nèi)存注意:
delete?p; p=?null;????//指針指向?“空”,避免重復(fù)清空同一內(nèi)存導(dǎo)致錯誤
c++不能和c的內(nèi)存管理指令混搭使用。
查看全部 -
引用函數(shù)參數(shù)
查看全部 -
函數(shù)參數(shù)的覆蓋性
重載函數(shù)
內(nèi)聯(lián)函數(shù)
代碼演示
查看全部 -
函數(shù)參數(shù)默認(rèn)值????? 實參覆蓋默認(rèn)值
函數(shù)重載:1.兩個或多個函數(shù)名稱統(tǒng)一
2.多個函數(shù)之間參數(shù)個數(shù)或者參數(shù)類型是不同的
好處:可以不用想函數(shù)的不同名字,即可以用相同的函數(shù)名
通過參數(shù)來辨別函數(shù)
內(nèi)聯(lián)函數(shù):? 編譯時將函數(shù)體代碼和實參代替函數(shù)調(diào)用語句
內(nèi)聯(lián)函數(shù)關(guān)鍵字:inline
是否進(jìn)行內(nèi)聯(lián)編譯是由編譯器決定的
邏輯簡單,調(diào)用頻繁的函數(shù)建議使用內(nèi)聯(lián)
遞歸函數(shù)無法使用內(nèi)聯(lián)方式
查看全部 -
釋放char類型的指針時:
delete [ ]str? ? ?(方括號內(nèi)為空)
釋放int數(shù)組時,方括號內(nèi)為數(shù)組長度
查看全部 -
釋放指針數(shù)組內(nèi)存時注意:
????delete? [ ]p
如果不加 [ ] 則為釋放指向的第一個內(nèi)存;
int *p=new int(20);? delete p;? ? ? 是對的
int *p=new int[20];? delete [20]p;? ? 是對的? ? ??
查看全部 -
使用new申請內(nèi)存,使用delete釋放內(nèi)存;
申請內(nèi)存需要判斷是否成功,釋放內(nèi)存需要設(shè)空指針;
new與delete配套使用。
查看全部 -
有默認(rèn)參數(shù)值的參數(shù)必須在參數(shù)表的最右端;
函數(shù)參數(shù)默認(rèn)值:無參則用默認(rèn)值,否則實參覆蓋默認(rèn)值;
內(nèi)聯(lián)函數(shù)(inline)
查看全部 -
指針指向const修飾的變量時,應(yīng)該是const int a=3,const int const *p = &a;
查看全部 -
const(控制變量是否可以變化) const int x=3;(則此時x為常量,不可進(jìn)行再賦值) const與指針類型 const int *p=NULL; int const *p=NULL;(兩種寫法完全等價) int *const p=NULL; const int *const p=NULL; int const *const p=NULL;(這兩種寫法也是完全等價的) int x=3; const int *p=&x; *p=4(錯誤,因為const指定的為*p);p=&y;(正確) int x=3; const int *const p=&x; p=&y(錯誤,因為const指向的為p,只能為x的地址) const與引用 int x=3;const int &y=x; y=10(錯誤,y通過const限定只能為x的別名,值為3) 總結(jié): const int x=3;int *y=&x;(這種寫法是錯誤的因為x本身定義為const,在用一個可變的指針指向,那么就有用指針改變x值得風(fēng)險,這是系統(tǒng)所不允許的); int x=3; const int *y=&x;(正確,這樣保證了指針對x只有可讀性,而沒有可寫性)
查看全部 -
函數(shù)參數(shù)默認(rèn)值
void?fun(int?i,?int?j=5);????//j的默認(rèn)值是5 void?fun(int?i=6,?int?j);????//錯誤,默認(rèn)值必須從右道左依次賦予 聲明給與默認(rèn)值,定義不建議給與默認(rèn)值 void?fun(int?i,?int?j=5);????//聲明 void?fun(int?i,?int?j){?????//定義? ... } 無實參則使用默認(rèn)值,否則使用實參
函數(shù)重載????????????????????????????????????????????????????????????????????生產(chǎn)新的參數(shù)名
int?getMax(int?x,?int?y,?int?z){...;}????//getMax_int_int_int double?getMax(double?x,?double?y){...;}??//getMax_double_double ?????????????????????????????????????????//計算機(jī)自動識別根據(jù)類型和個數(shù)
內(nèi)聯(lián)函數(shù)????//省去調(diào)用和回歸主要函數(shù)的時間,直接運行
關(guān)鍵字:inline
inline?int?max(int?a,?int?b?int?c);????//定義加inline int?main(){//正常的使用方法 int?i=10,j=4,k=9,m; m=max(i,j,k); return?0; }
內(nèi)聯(lián)函數(shù)的建議性的,編譯器未必執(zhí)行。
內(nèi)聯(lián)函數(shù)的邏輯需要簡單,不能有for,while
調(diào)用頻繁的函數(shù)建議使用內(nèi)聯(lián)
遞歸無法使用內(nèi)聯(lián)
查看全部
舉報