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 |
4 |
|
|
2.5 |
|
|
's' |
a[1] |
1001 |
9 |
|
|
1.5 |
|
|
'j' |
小结:
(1)当指针变量指向一个结构体数组时,可以通过改变(指针变量)中的值来指向数组中
不同下标的元素。
(2)不管结构体中有多少个成员,当指针变量中的值加1就会指向数组中下一个元素,如果是
减1则指向数组中前一个元素。
=======================================================================
非常好,现在,我们已经掌握了C语言中的(指向结构体数组的指针)但是,如何去运行用它呢?
所以,我们就需要通过下方的链接,进入到C语言的代码训练中,然后,通过实践去加深对该知识点的理解与运用。
>>>下载训练环境与使用说明(使用真实的开发环境,结合游戏闯关进行编程训练)
|