局部数组指针越界,main函数return0报错。

大家,帮忙看看,哪里错了,看了好几遍了,运行结果对了,但是指针越界报错了。

img

img

img

int arr[]={0},这只是定义了只有一个元素的数组。这肯定不是你想要的。由于数组大小未定,写成int arr[n]可能编译器不一定支持,因此只能尽量定义较大的静态数组,比如 int arr[100000] = {0},或者用malloc动态分配,如 int * arr = (int * )malloc(n * sizeof(int));

这里int arr[]={0} 这样定义数组就使得数组大小由后面初始化的元素个数决定了,所以你这个数组大小只能包含一个元素
而后面循环时要用的数组大小是根据n走的,所以你这里一定要在[]括号里面定义数组大小,一般[]里面给常量表达式,但是在c99标准里支持了定义变长数组即[n];而在c99标准之前,只能定义常量表达式才可以

img


改成int arr[n];