这个C代码中的指针发生了什么?
问题->这个C代码中的指针发生了什么?,c,pointers,memory,memory-address,C,Pointers,Memory,Memory Address,问题-> #include<stdio.h> int main() { int a,*b,**c,***d; int x; a=&x; b=&a; c=&b; d=&c; printf("%d\t%d\t%d\t%d",a,b,c,d); a++; b++;
#include<stdio.h>
int main()
{
int a,*b,**c,***d;
int x;
a=&x;
b=&a;
c=&b;
d=&c;
printf("%d\t%d\t%d\t%d",a,b,c,d);
a++;
b++;
c++;
d++;
printf("\n%d\t%d\t%d\t%d",a,b,c,d);
return 0;
}
为什么在第二个指针之后,所有指针的值都会增加8?如果选中,您会发现
sizeof(int)==4
和sizeof(int*)==8
。打印指针时,可以看到实际值。增加指针会增加指针指向的对象的大小
您非常接近未定义的行为。如果你试图阅读这些指针指向的内容(或者更糟的是,写信给他们),结果可能非常糟糕。评论不适用于扩展讨论;这段对话已经结束。
-760636132 -760636128 -760636120 -760636112
-760636128 -760636120 -760636112 -760636104