结构体指针即指向结构体的指针。


当一个指针用来指向一个结构体变量时,称之为结构体指针变量。结构体指针变量中的值是所指向的结构变量的首地址,通过结构指针即可访问该结构变量。这与数组指针和函数指针的情况是相同的。结构体指针变量定义的一般形式为:

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指针实现呢?


点赞(0)

C语言网提供由在职研发工程师或ACM蓝桥杯竞赛优秀选手录制的视频教程,并配有习题和答疑,点击了解:

一点编程也不会写的:零基础C语言学练课程

解决困扰你多年的C语言疑难杂症特性的C语言进阶课程

从零到写出一个爬虫的Python编程课程

只会语法写不出代码?手把手带你写100个编程真题的编程百练课程

信息学奥赛或C++选手的 必学C++课程

蓝桥杯ACM、信息学奥赛的必学课程:算法竞赛课入门课程

手把手讲解近五年真题的蓝桥杯辅导课程

Dotcpp在线编译      (登录可减少运行等待时间)