国产极品粉嫩福利姬萌白酱_欧美日韩在99线_粉条茄子做法视频_被按摩师玩弄到潮喷在线播放

首頁(yè)
社區
課程
招聘
下面的代碼當中 pp = (int *)*p 是什么含義?看起來(lái)是將指針p 強制轉換為(int*)類(lèi)型并且賦值給PP指針。
插入代碼
#include <iostream>
using namespace std;

int main() {
    int(*p)[10]; //定義一個(gè)數組指針
    int mm[10];
    int* pp;
    p = &mm; //數組mm 的地址放入指針p 當中
    pp = (int*)*p;
    for (int i = 0; i < 10; i++) {
        *pp++ = i;
    }
    pp = (int*)*p;
    for (int i = 0; i < 10; i++) {
        cout << *pp++ << "-";
    }
    return 0;
}

我的理解是上面定義的PP指針類(lèi)型是“int” ,那么指針p一定要轉換為int 類(lèi)型。然后,這里的賦值,我想問(wèn)問(wèn)賦值的內容是p位置的地址還是*p 指針所存儲的內容?

收藏
2條回答
天象獨行 2021-4-29 2021-4-29編輯

我自己看了一下,大概理解了。詳細如下反匯編代碼:

插入代碼
     8:     p = &mm; //數組mm 的地址放入指針p 當中
005824B2  lea         eax,[mm]  
005824B5  mov         dword ptr [p],eax  
     9:     pp = (int*)*p;
005824B8  mov         eax,dword ptr [p]  
005824BB  mov         dword ptr [pp],eax

首先是,指令“l(fā)ea eax,[mm]”即將數組的地址放入了寄存器eax 當中。接下來(lái),執行了三個(gè)mov 指令。最終的的mov 指令就是將寄存器eax 當中的指令放入[pp]。換一句話(huà)說(shuō)指針pp 和指針 p 里面的值其實(shí)是一樣的。

 

簡(jiǎn)單的說(shuō)就是
pp = (int)p 代碼可以說(shuō)就是指針變量與指針變量的賦值。就是將指針p 的內容放入指針pp 當中。

回復
Golden_Boy 2021-5-1 2021-5-1編輯

p是行指針,pp=&mm[0];
pp = (int )p;等于pp=(int)(p+0);
(p+1)指向下一行p+1也是指向下一行,而本題是一維數組,p和pp指針不是一個(gè)量級的,只是在此處指向了同一個(gè)整數而已,即mm[0]

 

回復
C++ 指針
  參與學(xué)習     人
  提問(wèn)次數     100 個(gè)
我的問(wèn)答 領(lǐng)取收益
0
我的提問(wèn)
0
我的回答
0
學(xué)習收益