17 指针与结构体

来源:互联网 发布:艾吉森空气净化器 知乎 编辑:程序博客网 时间:2024/05/20 20:56

为什么需要结构体?

                   为了表示一些复杂的事物,而普通的基本类型无法满足实际要求

什么叫结构体?

                   把一些基本数据类型组合在一起形成的一个新的复合数据类型,这个叫做结构体

如何定义结构体?

                  三种定义,建议使用第一种

                         //   第一种定义,这只是定义了一个新的数据类型,并没有定义变量

                            Struct  Student

                            {

                               int   age;

                               float   score;

                               char   sex;

                              };

                         //   第二种定义

                             Struct  Student2                 

                            {

                               int   age;

                               float   score;

                               char   sex;

                              }st2;

                        //   第三种定义                           

                           Struct 

                            {

                               int   age;

                               float   score;

                               char   sex;

                              }st3;

怎样使用结构体变量?

        赋值和初始化

                  定义的同时可以整天赋初值,

                  如果定义完之后,则只能单个赋初值。

        如何取出结构体变量中的每一个变量  【重点】

                  1.结构体变量名 . 成员名

                  2.指针变量名->成员名   (第二种方式更常用)

                          指针变量名->成员名     在计算机内部会被转化成

                          ( * 指针变量名 ) . 成员名       的方式来执行

                          所以说这两种方式是等价的

                   

                     例子:

                                   struct   Student 

                                   {

                                       int  age ;

                                       float  score ;

                                       char  sex ;

                                     } ;

                                  int  main (void)

                                  {

                                          struct  Student  st = { 88 , 66.6 ,  ‘ F ’ }; //  初始化,定义的同时赋初值

                                          struct  Student  * pst = & st;

                              

                                          pst ->age = 88;  //  第二种方式

                                          st . age = 10;  //  第一种方式

 

                                         return 0;                   

                                    }

                          1.pst ->age  等价于 (*pst).   age   等价于st . age 

                          2.我们之所以知道 pst->age等价于st . age  ,  是因为pst->age是被转化成了(*pst).   age  来执行

                          3.pst->age的含义:pst所指向的那个结构体变量中的age这个成员

                                 



        结构体变量和结构体变量指针作为函数参数传递的问题

                      推荐使用结构体指针变量作为函数参数来传递

        结构体变量的运算

                      结构体变量不能相加不能相减,也不能相互乘除,

                      但结构体变量可以互相赋值

                      例子:                       

                            Struct  Student

                            {

                               int   age;

                               float   score;

                               char   sex;

                              };

                          struct  Student  st1,  st2;

                          st 1 + st 2 ; st 1 - st 2 ; st 1 / st 2 ;//     都是错误的

                          st 1 = st 2 ; st 2 = st 1 ;//    都是正确的

                         

                           

        举例:

                     动态构造存放学生信息的结构体数组

      


                        











0 0