如何解决此C代码中的指针发生了什么?
问题->
#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
。当您打印指针时,您会看到实际值。指针递增会增加指针指向的大小。
您非常接近未定义的行为。如果您尝试读取这些指针指向的内容(或更糟糕的是,将它们写入),结果可能会很糟糕。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。