结构体初始化

结构体定义

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

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

结构体初始化

typedef struct _oper {
     int a;
     int b;
 } oper;
int main()
{
    //1、顺序初始化
    oper oper_one = {10,20};
    printf("oper_one caculate: a = %d b =%d\n", oper_one.a,oper_one.b);
    
    //2.1、乱序初始化
    oper oper_two = {
         .b = 30,
         .a = 20,
     };

     //2.2、乱序初始化
    oper oper_three = {
        a:40,
        b:20,
    };
    printf("oper_three caculate: a = %d b =%d\n", oper_three.a,oper_three.b);
    
    //3、整体初始化
    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;
使用memset进行初始化
struct sample_struct
{
  char csName[16];
  int iSeq;
  int iType;
};
memset(&stTest,0,sizeof(struct sample_struct));
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值