【发布时间】:2015-03-15 20:54:11
【问题描述】:
以下是我的 C 代码
main(){
int a[1];
a[0]=10;
a[1]=12;
printf("%d\n",a[1]);
copy_arr(a);
printf("%d",a[1]);
}
以下是输出
12
12
它不应该让数组超出范围或类似的东西吗?
或者上面的代码是否依赖于编译器?
我在 gcc 编译器中运行上述代码。
【问题讨论】:
-
main()应该是int main(void),并且您需要在顶部使用#include <stdio.h>。copy_arr定义在哪里? -
编译器应该给你一个警告,告诉你你的数组访问越界,而clang编译器确实警告你。不知道为什么 gcc 没有。
-
使用 gcc,请务必使用
-Wall -Wextra编译器标志启用警告。 -
@user3386109 编译器可以在这种特殊情况下解决它。但在大多数现实生活场景中,索引是基于一些运行时信息。