结构体指针即指向结构体的指针。
当一个指针用来指向一个结构体变量时,称之为结构体指针变量。结构体指针变量中的值是所指向的结构变量的首地址,通过结构指针即可访问该结构变量。这与数组指针和函数指针的情况是相同的。结构体指针变量定义的一般形式为:
struct 结构类型名 *结构指针变量名
定义之后,就可以像之前学过的指针一样,将结构体类型的变量赋值给这个指针即可,后面就可以用这个指针间接的访问结构体了,需要注意的是,不用于结构体变量用点(.)来访问成员的方法,结构体指针是通过箭头(->)来访问的,下面给大家一个完整的例子来学习。
#include<stdio.h> struct address { char name[30]; /*姓名,字符数组作为结构体中的成员*/ char street[40]; /*街道*/ unsigned long tel; /*电话,无符号长整型作为结构体中的成员*/ unsigned long zip; /*邮政编码*/ }; int main() { struct address A[3]={{"Zhang","Road NO.1",111111,4444}, {"Wang"," Road NO.2",222222,5555}, {"Li"," Road NO.3",333333,6666}}; struct address *p; p=&A[0]; printf("%s %s %u %u\n",p->name,p->street,p->tel,p->zip); return 0; }
大家可以亲自上机,理解代码并试验!
接着个程序,抛出一个问题,如果想通过循环,循环三次来输出全部A数组中的成员内容,如何通过P指针实现呢?
C语言网提供由在职研发工程师或ACM蓝桥杯竞赛优秀选手录制的视频教程,并配有习题和答疑,点击了解:
一点编程也不会写的:零基础C语言学练课程
解决困扰你多年的C语言疑难杂症特性的C语言进阶课程
从零到写出一个爬虫的Python编程课程
只会语法写不出代码?手把手带你写100个编程真题的编程百练课程
信息学奥赛或C++选手的 必学C++课程
蓝桥杯ACM、信息学奥赛的必学课程:算法竞赛课入门课程
手把手讲解近五年真题的蓝桥杯辅导课程