结构体数组初始化
《代码⼤全》建议在变量定义的时候进⾏初始化,但是很多⼈,特别是新⼈对结构体或者结构体数组定义是⼀般不会初始化,或者不知道怎么初始化。
1、初始化
typedef struct _TEST_T {
int i;
char c[10];
}TEST_T;
TEST_T gst = {1, “12345”};//可以初始化,设置i为1,s为⼀个字符串.
TEST_T gst = {1};//初始化个数少于实际个数时,只初始化前⾯的成员。定义数组初始化
TEST_Tgst = {.c=“12345”};//有选择的初始化成员。
2、复合字⾯量。
gst = (TEST_T){122, “1256”};//这是⼀个赋值语句,也可以作为初始化。可以出现在程序的任何地⽅。
当然也可以使⽤复合字⾯量来初始化:
gst = (TEST_T){.i=122, .c=“123”};
3、结构体数组
可以⽤多个⼤括号括起来:
TEST_T gst[10] = {{},{},{},{}}
也可以初始化其中的⼀个元素:
TEST_T gst[10] = {[2]={}, [3]={}}
也可以使⽤复合字⾯量:
TEST_T gst[10] = {[2].i=0, [3].i={}}
为什么要初始化:
1、对局部变量初始化可以防⽌随机值产⽣的危害。
2、对全局变量初始化可以告诉编译器,这是⼀个定义,⽽不是⼀个声明。(如果两个c中有相同的全局变量定义,且没有初始化,编译器会认为第⼆个是声明⽽不是定义。)
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论