西西軟件下載最安全的下載網(wǎng)站、值得信賴的軟件下載站!

首頁編程開發(fā)VC|VC++ → 走進(jìn)匯編指令來看C/C++指針初始化的金科玉律

走進(jìn)匯編指令來看C/C++指針初始化的金科玉律

相關(guān)軟件相關(guān)文章發(fā)表評論 來源:西西整理時間:2012/12/19 14:35:49字體大。A-A+

作者:西西點擊:0次評論:0次標(biāo)簽: 匯編指令

  • 類型:編程輔助大小:224KB語言:中文 評分:3.3
  • 標(biāo)簽:
立即下載

講述兩點:

1、匯編下的p與*p

2、有關(guān)指針初始化的金科玉律

int* p;

p與*p,相信很多人都在這犯過迷糊,最后在死記硬背中記住了他們的區(qū)別,但實際怎樣,也沒有親自到內(nèi)存中看過,這里,就帶您到內(nèi)存中看看,到匯編中溜溜,看看p與*p的廬山真面目。

簡單的程序:

#include <iostream>

using namespace std;

int main()

{

int i = 1;

int* p=&i;

}

先看匯編代碼分析:

(如果您不理解為什么[ebp-4][ebp-8]處存放的是函數(shù)第一和第二個局部變量,您可先閱讀《C++反匯編代碼分析–函數(shù)調(diào)用 》)

看到很多人問 指針p指向一個地址,那指針p有自己的地址么?答案是肯定的,通過上面的分析可以看出 p的地址是0012ff40,此地址處存放的是變量i的地址。除了通過這種方式,其實還有一種可輸出的方式查看p自己的地址,int*(*q)=&p;則q存放的就是p的地址,可以自己輸出查看一下。

再從內(nèi)存驗證以下是否真的如此:
我們已經(jīng)分析出來p的地址是0012ff40,可以直接在內(nèi)存觀察器中看一下,如圖:

最后一個小驗證,呵呵,直接在變量監(jiān)視器中看(其實是最簡單的):

Ok,認(rèn)識他們了吧,呵呵。在學(xué)習(xí)C++指針時,很多人都云里霧里的,一會兒地址一會兒值的,老師說是啥,咱就背啥,最多也就是輸出看一下。我自己好奇心很強,什么事情都喜歡刨根問底,那會兒最想掰開內(nèi)存看看,到底是不是這樣,但那時我不會,特憋屈感覺。如果你也跟我一樣的話,看那,就是了,呵呵。其實自我感覺搞懂指針還是很有用的,特別是在學(xué)習(xí)跟安全有關(guān)的東西。

2、指針的初始化

只講一點,關(guān)于使用指針的金科玉律:一定要在對指針應(yīng)用解除引用操作符(*)之前,將指針初始化一個確定的、適當(dāng)?shù)牡刂贰?/p>

依然是一個簡單的小程序:

#include <iostream>

using namespace std;

void main()

{

int i = 1;

int* p;

//int*p = &i;

*p=1;

}

//一共兩種情況,一種是之前給了指針一個確定的、適當(dāng)?shù)牡刂,然后賦值1,一種是沒有,直接賦值1

僅介紹指針初始化的這條金科玉律,至于初始化的其他操作,應(yīng)該沒有什么了,翻翻書,好多,不再贅述。

    相關(guān)評論

    閱讀本文后您有什么感想? 已有人給出評價!

    • 8 喜歡喜歡
    • 3 頂
    • 1 難過難過
    • 5 囧
    • 3 圍觀圍觀
    • 2 無聊無聊

    熱門評論

    最新評論

    發(fā)表評論 查看所有評論(0)

    昵稱:
    表情: 高興 可 汗 我不要 害羞 好 下下下 送花 屎 親親
    字?jǐn)?shù): 0/500 (您的評論需要經(jīng)過審核才能顯示)
    推薦文章

    沒有數(shù)據(jù)

      沒有數(shù)據(jù)
    最新文章
      沒有數(shù)據(jù)