快速初始化数组为同一值,

快速初始化数组为同一值

一般快速初始化数组会用到mmset 或者手动一个一个赋值,今天我们来讲讲另一种方法。
这个方法是我在从海思发布的SDK包中学来的,一开始我还不明白为什么他的代码要这样子写

static int g_fd[ISP_MAX_PIPE_NUM] = { [0 ...(ISP_MAX_PIPE_NUM - 1)] = -1 };

看这行代码的时候我是毫无头绪,为此也上网查了很多资料,包括 “…” 的用法,
虽然以前在main函数接受参数的时候看过“…” 大概就是说让main函数接受可变的参数个数。但是“…”出现在这里我就搞不明白了。
因为海思的后面的代码有用到这个数组的元素,而且没有初始化数组,所以我在想这样子的写法是不是一种快速初始化的方法,为此我做了一个例程去验证我的猜想。

#include<stdio.h>
#define   NUM  10

int main()
{
    int a[NUM]={[0 ...(NUM - 1)] = -1};
    
    int i =0;
    for(;i<10;i++)
    {
         printf("%d",a[i]);
    }
return 0;
}

输出结果为
程序输出
我觉得这个方法很神奇,除此之外初始化部分数组成员为不同的值也可以用这个方法。

#include<stdio.h>
#define   NUM  10


int main()
{
    int a[NUM]={[0 ...5] = -1,[5 ... 9]=2};

    int i =0;
    for(;i<10;i++)
    {
         printf("%d",a[i]);
    }

}

输出为

——————————
纪念自己第一次写博客,2020.03.09

在这里插入图片描述

评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值