【发布时间】:2020-05-05 18:04:24
【问题描述】:
对于以下代码spinet:
#include <stdio.h>
int main(void) {
int x = 12345678;
char *a = x;
printf("%d\n", x);
printf("%d\n %d\n %d\n %d\n", a[0], a[1], a[2], a[3]);
return 0;
}
GNU GCC v7.1.1 的输出: timeout:被监控的命令转储核心 sh: line 1: 11792 Segmentation fault timeout 10s main
请注意以下工作:
#include <stdio.h>
int main(void) {
int x = 12345678;
char *a;
*a = x;
printf("%d\n", x);
printf("%d\n %d\n %d\n %d\n", a[0], a[1], a[2], a[3]);
return 0;
}
【问题讨论】:
-
@Vishal gupta 这两个程序都有未定义的行为。
-
你应该检查指针到引用和指向引用的概念。