今天在朋友圈看到一个朋友发的图片
是给数组初始化的代码
截图如下:
我看到这个代码,也让我着实惊了一下,写代码这么久,也没有见过这样子初始化的。
这个代码是出自海思的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; }
代码输出:
如果我用这样的方式初始化呢?
#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; }
代码输出
当然,我们还可以这样初始化
#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; }
代码输出
最近重新看Linux内核代码,里面的C语言有很多精彩的地方,以后可以慢慢给大家说。还有一件事,Linux里面很多垃圾的代码也很多,特别是设备驱动,厂商的很多设备驱动写的并不是我们想象中的好,如果想提交patch给Linux内核社区,可以从这方面去找找。
最后,如果觉得不错,大家顺手点个赞,转发就是对我最大的鼓励和支持!
长按识别二维码关注公众号