为了账号安全,请及时绑定邮箱和手机立即绑定

关于数组初始化的问题

#include

main() { int scores7[10] = {[3] = 10,[5] = 15}; printf("scores7[3] = %i\n",scores7[3]); printf("scores7[4] = %i\n",scores7[5]); } 按道理上说利用建立索引的方法进行初始化了scores7【3】,和【5】,应该就把整个数组初始化了吧,为什么不能输出【4】,而且一直说源文件未编译,或者说我怎么做,都编译不了

正在回答

3 回答

实际数组使用时都要memset清空,以防这块内存之前使用过,有其他数据。没有给初始值确实可能时随机的。但是你已经初始了几个值,其他没有的就会初始为0,全局和静态数组就默认初始为0

0 回复 有任何疑惑可以回复我~
#1

慕粉1637207462 提问者

那为什么源文件会无法编译?
2017-02-20 回复 有任何疑惑可以回复我~
#2

墨染流年1008 回复 慕粉1637207462 提问者

我是在ubuntu环境下,我那个代码可以编译啊
2017-02-26 回复 有任何疑惑可以回复我~
#3

慕粉1637207462 提问者

非常感谢!
2017-03-06 回复 有任何疑惑可以回复我~

没有给个初值,一般不都是零吗

0 回复 有任何疑惑可以回复我~

#include <stdio.h>

int main()
{

    int scores7[10] = {[3] = 10,[5] = 15};
    
    printf("scores7[3] = %i\n",scores7[3]);
    printf("scores7[5] = %i\n",scores7[5]);

    printf("scores7[4] = %i\n",scores7[4]);

    return 0;
}

scores7[3] = 10
scores7[5] = 15
scores7[4] = 0

这样?是不是缺东西,没有初始化的,初始化为0.

0 回复 有任何疑惑可以回复我~
#1

慕粉1637207462 提问者

为什么会缺东西?如果按我这种定义方法,只定义【3】和【5】,那【1】、【2】、【4】是什么?是随机值还是?
2017-02-17 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消
C语言入门
  • 参与学习       926021    人
  • 解答问题       20793    个

C语言入门视频教程,带你进入编程世界的必修课-C语言

进入课程

关于数组初始化的问题

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信