今天在朋友圈看到一个朋友发的图片
是给数组初始化的代码
截图如下:
我看到这个代码,也让我着实惊了一下,写代码这么久,也没有见过这样子初始化的。
这个代码是出自海思的SDK里面的,华为的大牛还是很多啊,学习C语言的话,如果能把一份SDK代码看明白,看完,那是比看多少课程都会收获更多的。
我测试下这个代码
#include "stdio.h"#define MAX 10char 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内核社区,可以从这方面去找找。
最后,如果觉得不错,大家顺手点个赞,转发就是对我最大的鼓励和支持!
长按识别二维码关注公众号