C语言 指向结构体数组的指针

 

  1、 指向结构体数组的指针

     指向结构体数组的指针,其实,就是定义一个(结构体的指针变量)然后,让它指向一个(结构体数组),

   而这个(结构体指针变量)与(结构体数组)必须使用同一个结构体来定义。

    

  2、例子:   

        struct ST

        {

         int a;

         float b;

         char c;

        }a[ 2 ]={ {4,2.5,‘s’} ,{9,1.5,'j'} };   //定义了结构体的数组a

 

        struct student *p;   //定义了结构体的指针p;

 

        p = a;   //将(结构体数组a)赋给(结构体指针p ),

              这样,p 就是指向结构体数组的指针

              同时,p 中的值是结构体数组 a 的内存起始地址,

              从下面的表格可以看到是1000。

 

        p = p + 1    //p+1等于内存地址1000+1等于1001,再赋值给p,

                 所以,p指向内存地址1001。

 

        float f = p->b; //通过指针变量 p 调用成员b,首先,p中的内存地址是1001

                通过下面的表格可以看到内存地址1001是对应a[1],

                所以,就是调用a[1]中的成员b,

                即获取1.5。

 

结构体数组a 内存地址 变量值
a[0] 1000
    2.5
    's'
a[1] 1001
    1.5
    'j'
   成员名
      a
      b
      c
      a
      b
      c

 

 

 

  小结:

  (1)当指针变量指向一个结构体数组时,可以通过改变(指针变量)中的值来指向数组中

     不同下标的元素。

  (2)不管结构体中有多少个成员,当指针变量中的值加1就会指向数组中下一个元素,如果是

     减1则指向数组中前一个元素。

 

=======================================================================

非常好,现在,我们已经掌握了C语言中的(指向结构体数组的指针)但是,如何去运行用它呢?

所以,我们就需要通过下方的链接,进入到C语言的代码训练中,然后,通过实践去加深对该知识点的理解与运用。

>>>下载训练环境与使用说明(使用真实的开发环境,结合游戏闯关进行编程训练)