【发布时间】:2014-06-20 07:18:51
【问题描述】:
我有以下代码:
main(){
char *buf;
gets(buf);
printf("Got %x\n",*(unsigned int *)buf);
}
我将 01234 放在标准输入上作为缓冲区。我以为总是会出现分段错误,但我的讲师说有时它可以打印“Got 33323130”作为输出。
谁能解释一下为什么?
【问题讨论】:
-
读取未初始化的指针指向的位置会调用未定义的行为,即任何事情都可能发生。
-
没有。没有人能真正解释为什么。这种行为、段错误和未初始化变量获得的实际值完全依赖于编译器。您可以查看生成的机器代码以获得更多见解
标签: c pointers casting segmentation-fault