搜建筑资料网 - 做最好的工程资料下载网站!本站永久网址:www.sojianzhu.com

当前位置: > 知识 > > 内容页

结构体基本概念

浏览:2019-11-30 14:01

 

一、结构体变量的定义:

1.声明一个结构体模板;格式:

            struct   结构体名

            { 

                  数据类型    成员1的名字;

                  数据类型    成员2的名字;

                  ······

                  数据类型    成员n的名字;

             };

    结构体的名字,称为结构体标签,作为用户自定义的结构体类型的标志,用于与其他结构体类型相区别。

    构成结构体的变量,称为结构体成员。

      如:

      struct    student

      {

           long  studentID;           /*学号*/

           char  studentName[10];     /*姓名*/

           char  studentSex;          /*性别*/

           int   yearOfBirth;         /*出生年*/

           int   scotrEnglish;        /*英语成绩*/

           int   scoreComputer;       /*计算机成绩*/

           int   scoreMath;           /*数学成绩*/

           int   scoreProgramming;    /*程序设计成绩*/

       }

2.利用已经定义好的结构体数据类型来定义结构体变量

      (1)先声明结构体模板,再定义结构体变量。

            struct   stdent   stu1;

   /*利用前面已经声明的结构体类型,定义一个具有该类型的结构体变量stu1*/

      (2)在声明结构体模板的同时定义结构体变量。

            struct   student

            {

                   long   studentID;

                   char   studentName[10];

                   char   studentSex;

                   int    yearOfBirth;

                   int    score[4];

             }stu1;

   /*声明结构体类型的同时定义了 struct  student 类型的结构体变量 stu1*/

        当将结构体模板和结构体变量放在一起定义时,结构体标记是可选的,即也可不出现结构体名。

         如:

            struct   

            {

                   long   studentID;

                   char   studentName[10];

                   char   studentSex;

                   int    yearOfBirth;

                   int    score[4];

             }stu1;

             /*定义了一个具有相同成员的结构体变量 stu1 */

       但该方法因未指定结构体标签,不能再在程序的其他处定义结构体变量,因而并不常用。

二、用typedef定义数据类型

    关键字typedef用于为系统固有的或程序员自定义的数据类型定义一个别名。
例如:

                  typedef  int  INTERGER;

               /*为 int 定义了一个新的名字 INTERGER ,也就是说 INTERGER 与 int 是同义词。
*/

    也可以为结构体定义一个别名。
如:

             typedef  struct  student  STUDENT;

       与

            typedef  struct  student 

            {

                   long   studentID;

                   char   studentName[10];

                   char   studentSex;

                   int    yearOfBirth;

                   int    score[4];

             }STUDENT;

       是等价的。
都是为 struct  student 结构体类型定义了一个新的名字 STUDENT

           下面两条语句是等价的,二者都能用于定义结构体变量:

           STUDENT  stu1  stu2;

           strtct  student  stu1  stu2;

注:typedef 只是为一种已经存在的类型定义一个新的名字而已,并未定义一种新的数据类型。

三、结构体变量的初始化

     结构体变量的成员可以通过将成员的初值置于花括号之内来进行初始化。

  如:                STUDENT  stu1 = {100310121,"王刚",'M',1991,{72,83,90,82}};

             等价于: strtct  student  stu1 = {100310121,"王刚",'M',1991,{72,83,90,82}};

四、嵌套的结构体

     嵌套的结构体就是在一个结构体内包含了另一个结构体作为其成员。

  如:       

            

              typedef  struct  date

              { 

                    int  year;

                    int  month;            

                    int  day;

               }DATE;                      /*先定义一个具有年、月、日成员的结构体类型*/

               typedef  struct  student

               {

                     long  studentID;

                     char  studentName[10];

                     char  studentSex;

                     DATE  birthday;        /*根据这个DATE结构体模板来声明STUDENT结构模板*/

                     int   score[4];

                }STUDENT;     

        定义STUDENT类型的结构体变量stu1,并为其进行初始化如下:

              STUDENT  stu1 = {100310121,"王刚",'M',{1991,5,19},{72,83,90,82}};

分享到:

相关文章