課程
/后端開發(fā)
/C++
/C++遠征之離港篇
if(NULL==P)
NULL==P與P==NULL有什么區(qū)別
2016-05-16
源自:C++遠征之離港篇 5-2
正在回答
int *p = NULL;?定義一個指針變量p,其指向的內(nèi)存里面保存的是int 類型的數(shù)據(jù);在定義變量p 的同時把p 的值設置為0×00000000,而不是把*p 的值設置為0×00000000。這個過程叫做初始化,是在編譯的時候進行的。?int *p;?*p = NULL;?第一行代碼,定義了一個指針變量p,其指向的內(nèi)存里面保存的是int 類型的數(shù)據(jù);但是這時候變量p 本身的值是多少不得而知,也就是說現(xiàn)在變量p 保存的有可能是一個非法的地址。第二行代碼,給*p 賦值為NULL,即給p指向的內(nèi)存賦值為NULL;但是由于p 指向的內(nèi)存可能是非法的,所以調(diào)試的時候編譯器可能會報告一個內(nèi)存訪問錯誤。這樣的話,我們可以把上面的代碼改寫改寫,使p 指向一塊合法的內(nèi)存:?int i = 10;?int *p = &i;?*p = NULL;?在編譯器上調(diào)試一下,我們發(fā)現(xiàn)p 指向的內(nèi)存由原來的10 變?yōu)? 了;而p 本身的值, 即內(nèi)存地址并沒有改變。?
StevenW 提問者
舉報
C++掃清通往面向?qū)ο蟮淖詈笠坏勒系K,將所有知識點融會貫通
Copyright ? 2025 imooc.com All Rights Reserved | 京ICP備12003892號-11 京公網(wǎng)安備11010802030151號
購課補貼聯(lián)系客服咨詢優(yōu)惠詳情
慕課網(wǎng)APP您的移動學習伙伴
掃描二維碼關(guān)注慕課網(wǎng)微信公眾號
2016-05-16
int *p = NULL;?
定義一個指針變量p,其指向的內(nèi)存里面保存的是int 類型的數(shù)據(jù);在定義變量p 的同時把p 的值設置為0×00000000,而不是把*p 的值設置為0×00000000。這個過程叫做初始化,是在編譯的時候進行的。?
int *p;?
*p = NULL;?
第一行代碼,定義了一個指針變量p,其指向的內(nèi)存里面保存的是int 類型的數(shù)據(jù);但是這時候變量p 本身的值是多少不得而知,也就是說現(xiàn)在變量p 保存的有可能是一個非法的地址。第二行代碼,給*p 賦值為NULL,即給p指向的內(nèi)存賦值為NULL;但是由于p 指向的內(nèi)存可能是非法的,所以調(diào)試的時候編譯器可能會報告一個內(nèi)存訪問錯誤。這樣的話,我們可以把上面的代碼改寫改寫,使p 指向一塊合法的內(nèi)存:?
int i = 10;?
int *p = &i;?
*p = NULL;?
在編譯器上調(diào)試一下,我們發(fā)現(xiàn)p 指向的內(nèi)存由原來的10 變?yōu)? 了;而p 本身的值, 即內(nèi)存地址并沒有改變。?