难留 发表于 2022-6-2 13:08:13

数组问题

#include<stdio.h>
int main()
{
int a={1,3,5,7,9},i=4;
printf("%d",a);
}

我定义了一个长度为5的数组,但是a为何能输出?

傻眼貓咪 发表于 2022-6-2 13:13:19

本帖最后由 傻眼貓咪 于 2022-6-2 22:29 编辑

看编译器,有些编译器会报错。
输出的值也是随机的垃圾数据。

LLVM clang-cl 编译警告提示:array index 5 is past the end of the array (which contains 5 elements) [-Warray-bounds]

风车呼呼呼 发表于 2022-6-2 14:38:01

编译器基本都不做越界检查

jackz007 发表于 2022-6-2 14:39:04

      a 只是个 int 型的指针,与一般 int 型指针的区别在于,前者是常数(const),后者是变量(variable), 而内存中总是有数据的,a 只是把数组后续内存的 4 个字节的内容当成 int 型数据进行了显示而已。         
页: [1]
查看完整版本: 数组问题