You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

C语言中初始化数组时重定义下标元素,数组正确内容是什么?

C语言数组初始化问题解析

问题

在C语言中,使用int a[] = {4 , 9, 1, 8, [0]=5, 7};初始化数组后,数组a[]的正确内容是什么?

测试代码

int main () {
    int a[] = {4 , 9, 1, 8, [0]=5, 7};
    for(int i = 0; i < 10; i++) {
        printf("%d\n", a[i]);
    }
    return 0;
}

(注:原代码中printf的换行符存在格式问题,已修正为标准的\n)

测试输出

5
7
1
8
-1558310176 
712 

(注:输出中后几位为超出数组长度的栈内存垃圾值,无实际意义)

可选答案

  • a) 5, 9, 1, 8, 7
  • b) 4, 9, 1, 8, 5, 7
  • c) 5, 4, 9, 1, 8, 7
  • d) 4, 9, 1, 8, 7
  • e) 4, 9, 1, 8, 0, 5, 7

解析与结论

根据C语言的**指定初始化器(Designated Initializers)**规则:

  1. 未指定下标的元素按顺序填充数组,初始的4,9,1,8分别对应a[0]=4、a[1]=9、a[2]=1、a[3]=8;
  2. 指定下标[0]=5会覆盖a[0]的原有值,将其改为5;
  3. 后续未指定下标的元素7,会被放在当前已使用的最大下标(3)的下一个位置,即a[4]=7。

因此数组a的有效元素为5,9,1,8,7,对应选项a)。

内容的提问来源于stack exchange,提问作者RDE

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.26 08:15:36