C與C++知識(shí)補(bǔ)遺

C與C++知識(shí)補(bǔ)遺

ID:39550327

大?。?8.00 KB

頁數(shù):4頁

時(shí)間:2019-07-06

C與C++知識(shí)補(bǔ)遺_第1頁
C與C++知識(shí)補(bǔ)遺_第2頁
C與C++知識(shí)補(bǔ)遺_第3頁
C與C++知識(shí)補(bǔ)遺_第4頁
資源描述:

《C與C++知識(shí)補(bǔ)遺》由會(huì)員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在教育資源-天天文庫。

1、C/C++知識(shí)補(bǔ)遺棧空間的分配方式對(duì)普通的程序開發(fā)來講是沒有意義的,有系統(tǒng)來完成相關(guān)操作,但有時(shí)棧空間的分配方式又會(huì)顯得很重要。棧的分配方式有兩種,其一是從高地址空間向低地址空間分配,其二是從低地址空間向高地址空間分配。那么如何確定??臻g的分配方式呢,下述代碼可以用來確定棧的分配方式。intfun(){staticint*pnt=0;if(pnt==0){intabc;pnt=&abc;fun();}else{intbcd;if(pnt>&bcd){printf("從高地址向低地址分配");//Wind

2、ows的分配方式}else{printf("從低地址向高地址分配");}}return0;}+成員指針的用法。指針可以算作C/C++的短刀利器了,指向類成員的指針包括指向類數(shù)據(jù)成員的指針和指向類方法(函數(shù))的指針,下述代碼演示了這兩種指針的用法classAClass{public:AClass():m_name(0),m_age(0){};AClass(constchar*name);~AClass();public:voidSayHello();voidSayOkay();private:char*m

3、_name;intm_age;public:lv包包、古奇女包、coach包:www.naitiao.com

4、兔毛皮草、獺兔皮草、皮草服飾:www.shideke.comtypedefchar*AClass::*PACName;//引入新的類型(指向數(shù)據(jù)成員的指針)operatorPACName(){return&AClass::m_name;}//執(zhí)行類型轉(zhuǎn)換typedefintAClass::*PACAge;operatorPACAge(){return&AClass::m_age;}typedef

5、void(AClass::*Say)();//指向成員函數(shù)的指針};intfun(void){AClassa("AClass");AClass::Sayfunc=&AClass::SayHello();(a.*func)();//調(diào)用成員函數(shù)AClass*p=&a;func=&AClass::SayOkay;(p->*.func)();//調(diào)用成員函數(shù)printf("%st%d",a.*AClass::PACName(a),a.*AClass::PACAge(a));//數(shù)據(jù)成員指針的使用。PS:

6、是不是有些啰嗦?!}+對(duì)象在內(nèi)存中的布局。了解對(duì)象在內(nèi)存中的布局,可以很方便的通過數(shù)據(jù)成員找到包含該數(shù)據(jù)成員的對(duì)象的地址,續(xù)而執(zhí)行更多的操作,這是C/C++的一個(gè)奇技淫巧。下面是示例代碼structA{inta;doubleb;charc;}intfun(void){Ax;printf("%x,%x,%x,%x,%d",&x,&(x.a),&(x.b),&(x.c),sizeof(x));//運(yùn)行結(jié)果:0x27AC48,0X27AC48,0X27AC50,0x27AC58,24(結(jié)構(gòu)的大小是24而不

7、是13!請(qǐng)參考相關(guān)文檔)//如果知道了x.a的地址,那么x的地址也就知道了。return0;}+lv包包、古奇女包、coach包:www.naitiao.com

8、兔毛皮草、獺兔皮草、皮草服飾:www.shideke.comnew和delete操作符重載。new和delete操作符會(huì)經(jīng)常用到,但對(duì)這兩個(gè)操作符進(jìn)行重載的卻很少,通過這兩個(gè)操作符的重載,很容易實(shí)現(xiàn)把文件當(dāng)內(nèi)存來用。還可以通過這兩個(gè)操作符的重載,來跟蹤內(nèi)存的使用情況,諸如,是否有內(nèi)存泄露等。//完成內(nèi)存使用的跟蹤(通過重載全局new/delet

9、e操作符)void*operatornew(size_tsize,char*file,intline){//此處可以填寫記錄日志代碼returnmalloc(size);}void*operatordelete(void*p){//此處可以填寫記錄日志代碼free(p);}#defineNEW::new#defineDELETE::delete//接下來就需要使用NEW/DELETE替換掉new/delete了。將對(duì)象分配到指定的內(nèi)存空間(主要用作對(duì)象的成員函數(shù)來使用)//重載全局new/delete操

10、作符void*operator(size_tsize,void*p){returnp;}void*delete(void*p){return;}//成員函數(shù)操作符classClassA{public:ClassA();public:void*operatornew(size_t,void*);voidoperatordelete(void*p)};void*ClassA::operatornew(size_tsize,void*p){ret

當(dāng)前文檔最多預(yù)覽五頁,下載文檔查看全文

此文檔下載收益歸作者所有

當(dāng)前文檔最多預(yù)覽五頁,下載文檔查看全文
溫馨提示:
1. 部分包含數(shù)學(xué)公式或PPT動(dòng)畫的文件,查看預(yù)覽時(shí)可能會(huì)顯示錯(cuò)亂或異常,文件下載后無此問題,請(qǐng)放心下載。
2. 本文檔由用戶上傳,版權(quán)歸屬用戶,天天文庫負(fù)責(zé)整理代發(fā)布。如果您對(duì)本文檔版權(quán)有爭(zhēng)議請(qǐng)及時(shí)聯(lián)系客服。
3. 下載前請(qǐng)仔細(xì)閱讀文檔內(nèi)容,確認(rèn)文檔內(nèi)容符合您的需求后進(jìn)行下載,若出現(xiàn)內(nèi)容與標(biāo)題不符可向本站投訴處理。
4. 下載文檔時(shí)可能由于網(wǎng)絡(luò)波動(dòng)等原因無法下載或下載錯(cuò)誤,付費(fèi)完成后未能成功下載的用戶請(qǐng)聯(lián)系客服處理。