數(shù)組快捷初始化
常見的初始化方式有以下兩種:
int anTemp[10] = {-1, -1,-1, -1, -1, -1, -1, -1, -1, -1}; //初始化指定數(shù)據(jù)到數(shù)組
int anTemp[10]; memset(anTemp, 0, sizeof(int) * 10); //數(shù)組清零
果如數(shù)組到長度是128或者更大呢?對于方法二還是可以接受的,使用第一種方法把數(shù)組初始化成指定內(nèi)容,那就是一個(gè)噩夢,或者用循環(huán)?其實(shí)還有更簡單的方法:
int anTemp[128] = {[0 ... 127] = -1};
對,你們沒有看錯(cuò),就是這樣簡單。
結(jié)構(gòu)體初始化
我們用以下結(jié)構(gòu)體為例子:
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';
}
實(shí)際上,還有更簡便的初始化方式:
struct strucTemp_t st_temp = {.iTemp = -1, .str[0 ... 127] = '\0'};
// 還可以調(diào)換順序
struct structTemp_t st_temp = {.str[0 ... 127] = '\0', .iTemp = -1};
擴(kuò)展理解
switch 范圍判斷
int iTemp = 1;
switch(iTemp)
{
case 0 ... 9:
printf("case:%d\n",dd);
break;
default:
printf("default:5d\n",dd);
}