課程
/后端開發(fā)
/C++
/C++遠(yuǎn)征之離港篇
為什么確認(rèn)內(nèi)存是否申請(qǐng)成功的if語句是“if(NULL == p)”,而不是“if(p == NULL)”?感覺邏輯上說不過去呢
2016-12-11
源自:C++遠(yuǎn)征之離港篇 5-1
正在回答
其實(shí)最好是用if(nullptr==p)來判斷;
在c語言中NULL是宏定義#define NULL ?((void*)0);
但是因?yàn)閏++是強(qiáng)類型語言,void *是不能隱式轉(zhuǎn)換成其他指針類型的;
這時(shí)候C++ 11的nullptr可以很好的解決這個(gè)問題
if(NULL == p)和f(p == NULL)兩者并沒什么區(qū)別,都是判斷指針p是否為空。但是當(dāng)考慮到出錯(cuò)檢查時(shí),if(NULL == p)寫法更好,因?yàn)槿绻`寫為if(NULL = p)的時(shí)候,編譯器就會(huì)提示出錯(cuò)(因?yàn)槌A坎荒鼙毁x值);而if(p == NULL)如果誤寫為if(p = NULL),則編譯器不會(huì)報(bào)錯(cuò)。
舉報(bào)
C++掃清通往面向?qū)ο蟮淖詈笠坏勒系K,將所有知識(shí)點(diǎn)融會(huì)貫通
Copyright ? 2025 imooc.com All Rights Reserved | 京ICP備12003892號(hào)-11 京公網(wǎng)安備11010802030151號(hào)
購課補(bǔ)貼聯(lián)系客服咨詢優(yōu)惠詳情
慕課網(wǎng)APP您的移動(dòng)學(xué)習(xí)伙伴
掃描二維碼關(guān)注慕課網(wǎng)微信公眾號(hào)
2017-04-05
其實(shí)最好是用if(nullptr==p)來判斷;
在c語言中NULL是宏定義#define NULL ?((void*)0);
但是因?yàn)閏++是強(qiáng)類型語言,void *是不能隱式轉(zhuǎn)換成其他指針類型的;
這時(shí)候C++ 11的nullptr可以很好的解決這個(gè)問題
2016-12-11
if(NULL == p)和f(p == NULL)兩者并沒什么區(qū)別,都是判斷指針p是否為空。
但是當(dāng)考慮到出錯(cuò)檢查時(shí),if(NULL == p)寫法更好,因?yàn)槿绻`寫為if(NULL = p)的時(shí)候,編譯器就會(huì)提示出錯(cuò)(因?yàn)槌A坎荒鼙毁x值);而if(p == NULL)如果誤寫為if(p = NULL),則編譯器不會(huì)報(bào)錯(cuò)。