C/C++数组与结构体初始化

数组快捷初始化

常见的初始化方式有以下两种:

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); 
} 
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容