今天看項目代碼的時候,看到一種比較有意思的數組初始化方式,使用過程記錄一下
#include <stdio.h>
#include <string.h>
typedef struct
{
char * string0;
char * string1;
char * string2;
char * string3;
}CfgFn_s;
const CfgFn_s g_cfg[3][45] =
{
{
[0] = {NULL,NULL,NULL,NULL},
[1] = {"nihao", "word","aa", "yy"},
[2] = {NULL,NULL,NULL,NULL},
[3] = {"nihao", "word","aa", "rr"},
[4 ... 27] = {NULL,NULL,NULL,NULL}, //注意這個位置...的前後需要空格
[28] = {"bb", "word","gg", "mm"},
[29 ... 32] = {NULL,NULL,NULL,NULL},
[33] = {"test", "hh","kk", "bright"},
[34 ... 37] = {NULL,NULL,NULL,NULL},
[38] = {"hello", "hh","word", "bright"},
[39] = {"hello", "hh","word", "bright"},
[40] = {"hello", "hh","word", "bright"},
[41] = {"hello", "hh","word", "bright"},
[42] = {NULL,NULL,NULL,NULL},
[43] = {NULL,NULL,NULL,NULL},
[44] = {NULL,NULL,NULL,NULL}
},
{
[0] = {NULL,NULL,NULL,NULL},
[1] = {"word", "word","tt", "tt"},
[2] = {NULL,NULL,NULL,NULL},
[3] = {"word", "word","tt", "tt"},
[4] = {NULL,NULL,NULL,NULL},
[5] = {"word", "word","tt", "tt"},
[6 ... 7] = {NULL,NULL,NULL,NULL},
[8] = {"word", "word","tt", "tt"},
[9 ... 37] = {NULL,NULL,NULL,NULL},
[38] = {"hh", "hh","bright", "bright"},
[39] = {"hh", "hh","bright", "bright"},
[40] = {"hh", "hh","bright", "bright"},
[41] = {"hh", "hh","bright", "bright"},
[42] = {NULL,NULL,NULL,NULL},
[43] = {NULL,NULL,NULL,NULL},
[44] = {NULL,NULL,NULL,NULL}
}
};
int main()
{
int i=0;
for(i=0;i<45;i++)
{
printf("[%d] string0 %s,string1 %s,string2 %s,string3 %s\n",
i, g_cfg[1][i].string0,g_cfg[1][i].string1,g_cfg[1][i].string2,g_cfg[1][i].string3);
}
return 0;
}
運行結果是這樣的:
root@build:~/test/arrinit$ gcc arrinit.c
root@build:~/test/arrinit$ ./a.out
[0] string0 (null),string1 (null),string2 (null),string3 (null)
[1] string0 word,string1 word,string2 tt,string3 tt
[2] string0 (null),string1 (null),string2 (null),string3 (null)
[3] string0 word,string1 word,string2 tt,string3 tt
[4] string0 (null),string1 (null),string2 (null),string3 (null)
[5] string0 word,string1 word,string2 tt,string3 tt
[6] string0 (null),string1 (null),string2 (null),string3 (null)
[7] string0 (null),string1 (null),string2 (null),string3 (null)
[8] string0 word,string1 word,string2 tt,string3 tt
[9] string0 (null),string1 (null),string2 (null),string3 (null)
[10] string0 (null),string1 (null),string2 (null),string3 (null)
[11] string0 (null),string1 (null),string2 (null),string3 (null)
[12] string0 (null),string1 (null),string2 (null),string3 (null)
[13] string0 (null),string1 (null),string2 (null),string3 (null)
[14] string0 (null),string1 (null),string2 (null),string3 (null)
[15] string0 (null),string1 (null),string2 (null),string3 (null)
[16] string0 (null),string1 (null),string2 (null),string3 (null)
[17] string0 (null),string1 (null),string2 (null),string3 (null)
[18] string0 (null),string1 (null),string2 (null),string3 (null)
[19] string0 (null),string1 (null),string2 (null),string3 (null)
[20] string0 (null),string1 (null),string2 (null),string3 (null)
[21] string0 (null),string1 (null),string2 (null),string3 (null)
[22] string0 (null),string1 (null),string2 (null),string3 (null)
[23] string0 (null),string1 (null),string2 (null),string3 (null)
[24] string0 (null),string1 (null),string2 (null),string3 (null)
[25] string0 (null),string1 (null),string2 (null),string3 (null)
[26] string0 (null),string1 (null),string2 (null),string3 (null)
[27] string0 (null),string1 (null),string2 (null),string3 (null)
[28] string0 (null),string1 (null),string2 (null),string3 (null)
[29] string0 (null),string1 (null),string2 (null),string3 (null)
[30] string0 (null),string1 (null),string2 (null),string3 (null)
[31] string0 (null),string1 (null),string2 (null),string3 (null)
[32] string0 (null),string1 (null),string2 (null),string3 (null)
[33] string0 (null),string1 (null),string2 (null),string3 (null)
[34] string0 (null),string1 (null),string2 (null),string3 (null)
[35] string0 (null),string1 (null),string2 (null),string3 (null)
[36] string0 (null),string1 (null),string2 (null),string3 (null)
[37] string0 (null),string1 (null),string2 (null),string3 (null)
[38] string0 hh,string1 hh,string2 bright,string3 bright
[39] string0 hh,string1 hh,string2 bright,string3 bright
[40] string0 hh,string1 hh,string2 bright,string3 bright
[41] string0 hh,string1 hh,string2 bright,string3 bright
[42] string0 (null),string1 (null),string2 (null),string3 (null)
[43] string0 (null),string1 (null),string2 (null),string3 (null)
[44] string0 (null),string1 (null),string2 (null),string3 (null)
root@build:~/test/arrinit$