《结构体》

        C语言提供的结构体类型的变量成为结构体。

        结构体可以有多个数据项,每一个数据项的数据类型可以不同,这些数据项也被称为分量,成员或属性。

 一.结构体类型定义  

        struct   <结构标记>

        {

                成员1;

                成员2;

                成员n;

        };                                                   /*必须以分号结尾*/

 例:

                 struct    date

                {

                        int        year;

                        int        month;

                        int        day;

                };

                struct    student

                {

                       char        num[9];

                        char       name[20];

                        char       sex;

                        int           age;

                        float        score;

                        char        address[31];

                        struct  date        birthday;                     /*引用了struct  date类型*/

                };

 注:

      结构体类型在花括号后必须以分号结尾。

      date,student 是自定义的结构标记,与struct一起构成结构体类型名。

      定义结构体成员与定义变量格式相同,但不能赋初值。

      结构体成员可以是简单变量,数组或另一个结构体变量。

      定义结构体类型只是规定了构成这种数据类型的模型,在编译时并不给它分配存储空间。所以绝对不允许对定义的结构体类型进行存储数据的操作。(正如不能给int,float,char这些类型值一样) 

二 .结构体变量的定义

        (1).先定义结构体类型,再定义变量,即类型和变量分开。

        例:

               struct  student

               {                                                        /*定义结构体类型*/

                };

                struct  student    stu1,stu2;              /*定义结构体变量stu1和stu2*/ 

        (2).在定义结构体类型的同时定义变量。

        例:

                struct  student

                {

                }stu1,stu2;

        (3).不定义结构体类型,直接定义结构体变量。

        例:

                struct

                {

                }stu1,stu2;

 

三.结构体变量的使用

        (1).结构体变量的初始化

正如在定义数组时可以同时进行初始化一样,在定义结构体变量的同时给其赋值,即为结构体变量初始化。与其他数据一样,结构体变量也可以在编译时进行初始化。初始化的实质时对其中的各成员变量赋值,其一般格式为下:

                结构体类型名    结构体变量 = {初始化表};

例:

        struct student stu1 = {"04121220",

                                ​​​​​​​            "li si",

                ​​​​​​​        ​​​​​​​        ​​​​​​​            'm',

                ​​​​​​​        ​​​​​​​                    18,

                ​​​​​​​        ​​​​​​​        ​​​​​​​            99,

                ​​​​​​​        ​​​​​​​        ​​​​​​​            "Xian",

                ​​​​​​​        ​​​​​​​        ​​​​​​​             2003,

                                             06,

                ​​​​​​​        ​​​​​​​        ​​​​​​​             11};

注:各初始化项用逗号分隔。我们让每个成员的初始化项独占一行,只是为了提高代码的可读性。

        只能在定义结构体变量时使用该初始化格式。

(2).结构体变量成员的引用

        结构体变量的引用和数组一样,只能以分量的方式对结构体变量进行访问,一般格式如下:

                        结构体变量.成员名                /*.是结构体成员运算符*/

(3). 对结构体变量整体的引用

        结构体变量整体的引用限制较大,只能对它进行一部分操作。

        1.可作为函数的形参,实参或函数返回值等进行函数的数据传递。

        2.当两个结构体变量的类型相同时,可以互相整体赋值。

                 例:stu1 = stu2; 

         3.C语言不允许对结构体变量进行任何逻辑操作。

                例:stu1==stu2;         /*这是错误的,如果需要对他们进行比较,可以逐个比较其成员*/

四.结构体数组

(1).结构体数组的定义

        结构体数组的定义与结构体变量的定义类似,不再赘述。

(2). 结构体数组元素的使用

        1.结构体数组元素的初始化

         其一般格式如下:

                结构体类型名   结构体数组名  [数组长度] = {初始值表};

例:

struct  student    stu[3] = { {"04121220","zhangsan",'m',90},

                                        {"04121219","lisi",'m',92},

                                        {"04121221","wangwu",'m',97} };

         2.结构体数组元素的引用

                其一般格式如下:

                        结构体数组名[下标].成员名           /*引用数组某一元素的某成员*/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值