数组问题
#include<stdio.h>int main()
{
int a={1,3,5,7,9},i=4;
printf("%d",a);
}
我定义了一个长度为5的数组,但是a为何能输出? 本帖最后由 傻眼貓咪 于 2022-6-2 22:29 编辑
看编译器,有些编译器会报错。
输出的值也是随机的垃圾数据。
LLVM clang-cl 编译警告提示:array index 5 is past the end of the array (which contains 5 elements) [-Warray-bounds] 编译器基本都不做越界检查 a 只是个 int 型的指针,与一般 int 型指针的区别在于,前者是常数(const),后者是变量(variable), 而内存中总是有数据的,a 只是把数组后续内存的 4 个字节的内容当成 int 型数据进行了显示而已。
页:
[1]