数组快捷初始化
常见的初始化方式有以下两种:
int anTemp[10] = {-1, -1,-1, -1, -1, -1, -1, -1, -1, -1}; //初始化指定数据到数组
int anTemp[10]; memset(anTemp, 0, sizeof(int) * 10); //数组清零
果如数组到长度是128或者更大呢?对于方法二还是可以接受的,使用第一种方法把数组初始化成指定内容,那就是一个噩梦,或者用循环?其实还有更简单的方法:
int anTemp[128] = {[0 ... 127] = -1};
对,你们没有看错,就是这样简单。
结构体初始化
我们用以下结构体为例子:
struct structTemp_t
{
int iTemp;
int str[128];
};
以下是我们常用的初始化方式:
struct structTemp_t st_temp;
memset(&struct_temp, 0, sizeof(struct strucTemp_t));
// 或者
st_temp.iTemp = -1;
for(int i=0; i<128; i++){
st_temp.str[i] = 'a';
}
实际上,还有更简便的初始化方式:
struct strucTemp_t st_temp = {.iTemp = -1, .str[0 ... 127] = '\0'};
// 还可以调换顺序
struct structTemp_t st_temp = {.str[0 ... 127] = '\0', .iTemp = -1};
扩展理解
switch 范围判断
int iTemp = 1;
switch(iTemp)
{
case 0 ... 9:
printf("case:%d\n",dd);
break;
default:
printf("default:5d\n",dd);
}
网友评论