我遇到了这两个代码块:
#include <stdio.h>
int main() {
int a[10], i;
for (i = 1; i <= 10; i++) {
scanf("%d", &a[i]);
printf("%d\n", a[i]);
}
return 0
}
当我运行第一段代码时,代码运行良好,但有时会被覆盖,我没有得到预期的结果。
但是,当我运行第二段代码时,程序运行得非常好,没有错误。
#include <stdio.h>
int main() {
int size;
scanf("%d", &size);
int a[size], i;
for (i = 1; i <= size; i++) {
scanf("%d", &a[i]);
printf("%d\n", a[i]);
}
return 0
}
为什么程序在第二种情况下运行完美?即使在第二种情况下,下标也会超过声明的数组大小。