您当前的位置: 首页 > 

这样给数组初始化,你肯定没有见过

发布时间:2021-11-20 08:34:22 ,浏览量:0

今天在朋友圈看到一个朋友发的图片

是给数组初始化的代码

截图如下:

04fab332b8a5ea8ab499137f26d18d5b.png

我看到这个代码,也让我着实惊了一下,写代码这么久,也没有见过这样子初始化的。

这个代码是出自海思的SDK里面的,华为的大牛还是很多啊,学习C语言的话,如果能把一份SDK代码看明白,看完,那是比看多少课程都会收获更多的。

我测试下这个代码

#include "stdio.h"

#define MAX 10

char array[MAX] = { [0 ...(MAX-1)] = '8' };
//char array[MAX] = {'A'};

int main(void){
  for(int i = 0; i< MAX; i++)
    printf("array[%d]=%c\n",i,array[i]);
  return 0;
}

代码输出:

50876296636e3bfa86f4afb9def0764c.png

如果我用这样的方式初始化呢?

#include "stdio.h"

#define MAX 10

//char array[MAX] = { [0 ...(MAX-1)] = '8' };
char array[MAX] = {'A'};

int main(void){
  for(int i = 0; i< MAX; i++)
    printf("array[%d]=%c\n",i,array[i]);
  return 0;
}

代码输出

41f312112601cad77a7708dc37b8a6fa.png

当然,我们还可以这样初始化

#include "stdio.h"
#include "string.h"

#define MAX 10

//char array[MAX] = { [0 ...(MAX-1)] = '8' };
char array[MAX];

int main(void){
  int i;
  memset(array,'B',MAX);
  for( i = 0; i< MAX; i++ )
    printf("array[%d]=%c\n",i,array[i]);
  return 0;
}

代码输出

29d06eaaac01263f4d7a9d364a96431b.png

最近重新看Linux内核代码,里面的C语言有很多精彩的地方,以后可以慢慢给大家说。还有一件事,Linux里面很多垃圾的代码也很多,特别是设备驱动,厂商的很多设备驱动写的并不是我们想象中的好,如果想提交patch给Linux内核社区,可以从这方面去找找。

最后,如果觉得不错,大家顺手点个赞,转发就是对我最大的鼓励和支持!

ffa2ada939c545de4a5444f4ef7059dd.png

长按识别二维码关注公众号

关注
打赏
1688896170
查看更多评论

暂无认证

  • 0浏览

    0关注

    106153博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文
立即登录/注册

微信扫码登录

0.0741s