美文网首页
C/C++数组与结构体初始化

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

作者: 404d67ac8c12 | 来源:发表于2019-08-19 20:37 被阅读0次

    数组快捷初始化

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

    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); 
    } 
    

    相关文章

      网友评论

          本文标题:C/C++数组与结构体初始化

          本文链接:https://www.haomeiwen.com/subject/qhaesctx.html