簡體   English   中英

C ++中的指針同一變量具有兩個不同的地址

[英]Pointer in C++ Same variable have two different address

通常,使用此代碼,我們應該獲得指針的相同地址:如果我們正常使用這樣的代碼,則i&i指向相同的地址

int *i=NULL;
int k=5;
i=&k;
printf("%p %p",&i,i);

這是printf的結果(僅最后一位不同): 0x7fff5fbff8b8 0x7fff5fbff8b4

有人可以解釋一下為什么嗎?

因為它們不一樣。 i是一個包含變量k的地址的指針, &i是一個包含變量i的地址的指針。

i是一個指向整數的指針。 i的值是一個地址( k的地址)。

&ii的地址。

您只需輸出兩個不同的地址。

你可以這樣做:

#include <cstdio>

int main()
{
   int *i=NULL;
   int k=5;
   i=&k;
   int** j = &i;
   printf("%p %p %p",&i,i,j);
}

您可以獲得輸出:

[wolf@Targaryen]:~$ r
0xbfc8a1a8 0xbfc8a1a4 0xbfc8a1a8

看到第一個地址與第三個相同。 因為j的值是i的地址。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM