结构体初始化

来源:互联网 发布:学而知之什么意思 编辑:程序博客网 时间:2024/06/11 03:16

结构体定义

typedef struct _oper {     int a;     int b; } oper;//定义结构体 oper a1;//定义变量

结构体定义并不是定义一个变量,而是定义了一种数据类型,这种类型是你定义的,它可以和语言本身所自有的简单数据类型一样使用(如 int )。
结构体本身并不会被作为数据而开辟内存,真正作为数据而在内存中存储的是这种结构体所定义的变量。
一个结构体变量占多大内存空间呢?这是由这种结构体类型的定义决定的,可以想象为了同时存储结构体的每一个成员,那么结构体变量的存储大小,就应该是所有分量的存储空间的总合。

结构体初始化

typedef struct _oper {     int a;     int b; } oper;int main(){    //顺序初始化    oper oper_one = {10,20};    printf("oper_one caculate: a = %d b =%d\n", oper_one.a,oper_one.b);    //乱序初始化    oper oper_two = {         .b = 30,         .a = 20,     };     //乱序初始化    oper oper_three = {        a:40,        b:20,    };    printf("oper_three caculate: a = %d b =%d\n", oper_three.a,oper_three.b);    //整体初始化    oper oper_four;    oper_four = oper_three;    printf("oper_four caculate: a = %d b =%d\n", oper_four.a,oper_four.b);    return 0;}

单项初始化(顺序初始化)

oper oper_one = {10, 20, add};

单项初始化(乱序初始化)

其中.形式为C99支持,

oper oper_two = {         .b = 30,         .a = 20,         .cal_func = &add,     }; 

:形式为GCC支持

oper oper_three = {          cal_func:&add,          a:40,          b:20,     };

整体初始化

不同于数组,标准C中结构体变量可以整体赋值

oper oper_four;oper_four = oper_three;
原创粉丝点击