创建一个变量,然后将其内存地址增加1

adi*_*hya 1 c pointers

我创建了一个变量,然后打印了它的位置号。然后,我将内存位置增加了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)

Sto*_*ica 5

C程序中的每个对象在其存在期间都有一个唯一的固定地址。您将i地址的副本存储到中x。然后您x可以更改它所保存的值,现在它包含另一个地址。但是对值的操纵x不会动i。命名的对象i仍位于同一位置。