[英]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
的地址)。
&i
是i
的地址。
您只需輸出兩個不同的地址。
你可以這樣做:
#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.