我创建了一个变量,然后打印了它的位置号。然后,我将内存位置增加了1。在两种情况下,我得到了预期的结果,而一种情况下给出的答案是我的老师无法正确解释的。如果有人告诉我为什么第二次printf("%p\n",&i)给出的输出与第一次相同,那将非常有帮助。
int main()
{
int i=3,*x;
x=&i;
printf("%p\n",x);
printf("%p\n",&i);
printf("%p\n",&(*x));
x++;
printf("\n");
printf("%p\n",x);
printf("%p\n",&i);
printf("%p\n",&(*x));
}
0x7ffce5dc5208
0x7ffce5dc5208
0x7ffce5dc5208
0x7ffce5dc520c
0x7ffce5dc5208
0x7ffce5dc520c
Run Code Online (Sandbox Code Playgroud)
C程序中的每个对象在其存在期间都有一个唯一的固定地址。您将i地址的副本存储到中x。然后您x可以更改它所保存的值,现在它包含另一个地址。但是对值的操纵x不会动i。命名的对象i仍位于同一位置。