#include <stdio.h>
int main()
{
int *b;
int *a;
a[1] = 99;
printf("%p", a);
return 0;
}
为什么此代码因segfault而失败: 以退出代码11完成的过程
#include <stdio.h>
int main()
{
//int *b;
int *a;
a[1] = 99;
printf("%p", a);
return 0;
}
此代码打印并显示指针地址? 0x7fff58162a40 如果我还没有初始化指针a,a [1] = 99的工作方式是什么? 如果这很重要,请在Mac OS Sierra上使用gcc进行编译。
答案 0 :(得分:5)
访问未初始化的变量和/或写入未请求内存的对象/数组是未定义的行为。 “未定义”意味着一切都会发生,即使该程序似乎按照您的意图“工作”。
实际上,这两个程序都可以;如果其中一个“有效”,那是某种运气(好或坏,您可能会决定)。