浅谈C语言中结构体的初始化
2013-05-23 15:05
701 查看
《代码大全》建议在变量定义的时候进行初始化,但是很多人,特别是新人对结构体或者结构体数组定义是一般不会初始化,或者不知道怎么初始化。
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中有相同的全局变量定义,且没有初始化,编译器会认为第二个是声明而不是定义。)
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中有相同的全局变量定义,且没有初始化,编译器会认为第二个是声明而不是定义。)
您可能感兴趣的文章:
相关文章推荐
- 浅谈C语言中结构体的初始化
- 浅谈C语言中结构体的初始化
- 浅谈C语言中结构体的初始化
- 测试一下C语言结构体初始化
- C语言中结构体的初始化
- 浅谈c语言typedef 与结构体指针(个人小经验)
- C语言中结构体的初始化
- 第09天C语言(11):结构体-初始化
- C语言中结构体的初始化
- C语言结构体初始化和结构体指针
- C语言中的结构体,结构体中数组初始化与赋值
- C语言中结构体的三种初始化方式以及结构体作为传参传递
- <C语言>结构体的各种定义、初始化、操作代码实例----注释详解
- C语言结构体声明中冒号的使用(占位符) & C结构体的乱序初始化
- C语言结构体初始化的三种方法
- c语言结构体----初始化bug1
- C语言中结构体的初始化
- 我也要学C语言-第十九章:结构体的定义和初始化
- C语言中结构体的初始化
- C语言结构体初始化的三种方法