課程
/后端開發(fā)
/C++
/C++遠(yuǎn)征之離港篇
if(NULL==P)
NULL==P與P==NULL有什么區(qū)別
2016-05-16
源自:C++遠(yuǎn)征之離港篇 5-2
正在回答
int *p = NULL;?定義一個(gè)指針變量p,其指向的內(nèi)存里面保存的是int 類型的數(shù)據(jù);在定義變量p 的同時(shí)把p 的值設(shè)置為0×00000000,而不是把*p 的值設(shè)置為0×00000000。這個(gè)過(guò)程叫做初始化,是在編譯的時(shí)候進(jìn)行的。?int *p;?*p = NULL;?第一行代碼,定義了一個(gè)指針變量p,其指向的內(nèi)存里面保存的是int 類型的數(shù)據(jù);但是這時(shí)候變量p 本身的值是多少不得而知,也就是說(shuō)現(xiàn)在變量p 保存的有可能是一個(gè)非法的地址。第二行代碼,給*p 賦值為NULL,即給p指向的內(nèi)存賦值為NULL;但是由于p 指向的內(nèi)存可能是非法的,所以調(diào)試的時(shí)候編譯器可能會(huì)報(bào)告一個(gè)內(nèi)存訪問錯(cuò)誤。這樣的話,我們可以把上面的代碼改寫改寫,使p 指向一塊合法的內(nèi)存:?int i = 10;?int *p = &i;?*p = NULL;?在編譯器上調(diào)試一下,我們發(fā)現(xiàn)p 指向的內(nèi)存由原來(lái)的10 變?yōu)? 了;而p 本身的值, 即內(nèi)存地址并沒有改變。?
StevenW 提問者
舉報(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)
購(gòu)課補(bǔ)貼聯(lián)系客服咨詢優(yōu)惠詳情
慕課網(wǎng)APP您的移動(dòng)學(xué)習(xí)伙伴
掃描二維碼關(guān)注慕課網(wǎng)微信公眾號(hào)
2016-05-16
int *p = NULL;?
定義一個(gè)指針變量p,其指向的內(nèi)存里面保存的是int 類型的數(shù)據(jù);在定義變量p 的同時(shí)把p 的值設(shè)置為0×00000000,而不是把*p 的值設(shè)置為0×00000000。這個(gè)過(guò)程叫做初始化,是在編譯的時(shí)候進(jìn)行的。?
int *p;?
*p = NULL;?
第一行代碼,定義了一個(gè)指針變量p,其指向的內(nèi)存里面保存的是int 類型的數(shù)據(jù);但是這時(shí)候變量p 本身的值是多少不得而知,也就是說(shuō)現(xiàn)在變量p 保存的有可能是一個(gè)非法的地址。第二行代碼,給*p 賦值為NULL,即給p指向的內(nèi)存賦值為NULL;但是由于p 指向的內(nèi)存可能是非法的,所以調(diào)試的時(shí)候編譯器可能會(huì)報(bào)告一個(gè)內(nèi)存訪問錯(cuò)誤。這樣的話,我們可以把上面的代碼改寫改寫,使p 指向一塊合法的內(nèi)存:?
int i = 10;?
int *p = &i;?
*p = NULL;?
在編譯器上調(diào)試一下,我們發(fā)現(xiàn)p 指向的內(nèi)存由原來(lái)的10 變?yōu)? 了;而p 本身的值, 即內(nèi)存地址并沒有改變。?