C语言第七课

主要内容:结构体(很重要,掌握)

一、结构体的声明

       结构体是一种比较灵活的数据类型,与oc要学的类很相似

       结构体是一种自己定义的数据类型示例

       struct  结构体名  student // 定义一个学生类型

       {

                类型说明符  成员名;char name;// 姓名变量

                ... ...char sex;// 性别变量

                类型说明符  成员名;float  core;// 分数变量

        };

        由结构体类型修饰的变量,叫结构体变量

        定义:struct   结构体名  变量名  =  { 初值 };

        示例:struct  student  stu = { " 张平辉 ",  ' m ',  98.5 };

        想访问结构体成员:结构体变量名 . 成员变量名

        如:stu . name  / / 输出得到得到姓名

        注意:结构体成员变量与普通变量一样,可直接赋值

        示例:

                 student  stu2 = {};

                 stu2 = stu1;/ / 把结构体变量stu1的值赋值给stu2

                 可以通过把数组放在结构体内实现数组的直接赋值(数组不可以直接赋值)

二、匿名结构体

       为现有的类型创建一个类型别名(通俗的讲就是为现有类型创建一个其它的名字)

       语法:typedef  原类型名  新类型名

       示例:

               typedef  int Integer;

               Integer  a = 10;/ / 等同于 int a = 10;

       使用typedef定义结构体

               typedef struct  {

                         char name[20];

                         char sex;

                         float score;

               } Student;

               typedef struct student  Student;Student stu1 = {"张平辉", 'm' 98};

               Student stu1 = {"张平辉", 'm' 98};Student stu2 = {"赵文龙", 'm',99};

               Student stu2 = {"赵文龙", 'm',99};

         结构体数组

         将多个结构体变量放到数组中,构成结构体数组

                 Student stu [ ] = {stu1, stu2};

         通过下标访问结构体数组

                  stu[1].name

三、结构体嵌套

       结构体的成员依然可以是结构体

       示例:

               typedef struct date {

                       int year;

                       int month;

                       int day;

               } MyDate;

              struct student {

                       char  name[];

                      MyDate birthday;

              } / / 访问:stu1.birthday.year

        结构体和数组的相互嵌套可以实现比较复杂的数据结构

四、结构体内存占用

       以最大成员变量类型所占空间为分配单位,按结构体成员声明顺序自上而下分配

       分配空间不足时以存储成员变量时,分配新的空间


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值