问题描述
问题->
#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",d);
return 0;
}
输出
-760636132 -760636128 -760636120 -760636112
-760636128 -760636120 -760636112 -760636104
为什么第二个指针之后所有指针的值都增加8?
解决方法
如果选中,您会发现sizeof(int) == 4
和sizeof(int*) == 8
。当您打印指针时,您会看到实际值。指针递增会增加指针指向的大小。
您非常接近未定义的行为。如果您尝试读取这些指针指向的内容(或更糟糕的是,将它们写入),结果可能会很糟糕。