《代码大全》建议在变量定义时初始化,但是很多人,特别是新人,不初始化结构体或结构体数组定义,或者不知道如何初始化。
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具有相同的全局变量定义且未初始化,编译器将第二个视为声明而不是定义。 )