講述兩點(diǎn): 1、反匯編下的p與*p 2、有關(guān)指針初始化的金科玉律int* p;p與*p,相信很多人都在這犯過迷糊,最后在死記硬背中記住了他們的區(qū)別,但實(shí)際怎樣,也沒有親自到內(nèi)存中看過,這里,就帶您到內(nèi)存中看看,到反匯編中溜溜,看看p與*p的廬山真面目。簡單的程序:
先看反匯編代碼分析:(如果您不理解為什么[ebp-4][ebp-8]處存放的是函數(shù)第一和第二個(gè)局部變量,您可先閱讀《C++反匯編代碼分析--函數(shù)調(diào)用 》)看到很多人問 指針p指向一個(gè)地址,那指針p有自己的地址么?答案是肯定的,通過上面的分析可以看出 p的地址是0012ff40,此地址處存放的是變量i的地址。除了通過這種方式,其實(shí)還有一種可輸出的方式查看p自己的地址,int*(*q)=&p;則q存放的就是p的地址,可以自己輸出查看一下。再從內(nèi)存驗(yàn)證以下是否真的如此:我們已經(jīng)分析出來p的地址是0012ff40,可以直接在內(nèi)存觀察器中看一下,如圖: