C++中的指针相同的变量有两个不同的地址

sat*_*res 1 c++ pointers

通常使用此代码,我们应该得到指针的相同地址:如果我们正常使用这样的代码,i&i指向相同的地址

int *i=NULL;
int k=5;
i=&k;
printf("%p %p",&i,i);
Run Code Online (Sandbox Code Playgroud)

这是结果printf(只有最后一位数字不同):0x7fff5fbff8b8 0x7fff5fbff8b4

任何人都可以解释一下为什么?

Yu *_*Hao 11

因为它们不一样.i是一个包含变量地址的指针k,&i是一个包含变量地址的指针i.

  • `&i`不是指针,它是地址常量;) (3认同)