结构体的定义和结构变量的定义

       以前写程序的时候总是要用到结构体,但是对结构体的定义老是稀里糊涂,今天梳理下,让自己长长记性!

       结构体的定义有以下3种形式:

‘      1、struct  Date

             {

                            int year,month,da;

             };

            这时定义结构体变量:          struct Date dt;

            或

               typedef  struct Date  Date;//将Date作为struct  Date的别名

               Date    dt;

       2、typedef  struct  Date

             {

                 int year,month,da;

             }Date;

           或   typedef  struct                   //省去结构名

                 {

                   int year,month,da;

                 }Date;                           //直接给出该结构体的类型别名

           这时定义结构体变量:   Date dt;

       3、在定义结构体的同时定义结构变量:

             struct  Date                 //不省略结构名

             {

                   int year,month,da;

             }dt;

       或    struct                  //省去结构名

               {

                    int year,month,da;

                }dt;


       结构变量在定义时可以赋值初始化,但在定义好之后不能再用各个成员的值给他赋值,但可以用已经初始化的同类型结构变量赋值。

      例: Date dt1 = {2015,9,21};  //合法

               Date dt1;

               dt1 = {2015,9,21};  //非法

              Date dt2 = dt1;     //合法

              或 dt2 = dt1;     //合法

        

      我在函数中也经常使用结构体,结构类型也可以作为返回值,但由有返回值的函数调用过程机制可以知道,至少两次赋值过程,因此结构类型作为函数返回值是很低效的。所以常用void型函数,将函数的形参设为结构类型的指针,通过间接引用修改结构变量的值。再一次显示出指针的高效性!

  • 5
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值