您好,登錄后才能下訂單哦!
指針的二值
關(guān)于指針,我們有很多困惑,尤其是在使用時什么時候加*,什么時候不加*,都分別代表什么意思,在老師指導(dǎo)下,自己做了一些總計如下:
按照我個人的理解指針的二值分別就是指指針存儲的值和指針指向的值,我們都知道,我們經(jīng)常說的指針實際上是指指針變量,那么變量就有存儲的指,只不過指針比較特殊,是用來存儲地址的變量,這就是指針二值之一,既然指針變量存儲了變量的地址,那么就可以通過存儲的地址值就可以找到指向的值。是不是還是很凌亂不知所云,ok,那就讓我們看看測試代碼,*是用來聲明指針的那么當(dāng)聲明了一級指針后,p就是指針變量的名字,代表一個空間,用來存儲地址的變量,那么p就是指針變量存儲的值,*p就是指向的值,對一級指針是這樣,對多級指針以此類推。
如下圖1:
當(dāng)聲明了普通變量 a,b,并分別賦值10和100;打印輸出后的結(jié)果就是第一行,這個沒有任何疑問吧?
接著我們在程序的開頭分別聲明了兩個一級指針和二級指針,按照我的理解,一級指針是用來存地址的,那么當(dāng)要存儲一級指針時就要用二級指針來接受,好了言歸正傳,我們接著把a,b的地址賦值給指針變量i,j打印輸出的結(jié)果 i=17823864 j=17823852 對這個結(jié)果是不是很怪,ok,其實這個結(jié)果在預(yù)計范圍之內(nèi),也印著了我說的i j代表的是存儲的地址值,不信我們看一下那個十進制數(shù)對應(yīng)的十六進制數(shù)是否和a和b的地址值相等。如圖2
當(dāng)我們給ij加上*后輸出結(jié)果如圖1的第三行,對于二級指針同樣如此,來我們一起看輸出結(jié)果的第四行,按照我前邊說的,*p是指p存儲的地址所保存的值,對吧?對于二級指針p,保存的一級指針i的地址,那么i內(nèi)部的值又是保存的a的地址,也就對應(yīng)了a的地址,對于**p,p保存了i'的地址,*p指p指向的值也就是i保存的地址值,那么**p就是在*p的基礎(chǔ)上指向的值,也就是指i指向的值,即就是a。
所以對于指針變量來說當(dāng)不加*時就是指針變量本身存儲的值,加上*時代表指針變量指向的值!
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。