一个指针变量当用来指向一个结构体变量时,称之为结构体指针变量。结构体指针变量中的值是所指向的结构变量的首地址。通过结构指针变量即可访问该结构的变量。
结构指针变量说明的一般形式如下:
struct 结构名 *结构指针变量名
结构名和结构变量时两个不同的概念,不能混淆。结构名只能表示一个结构形式,编译系统并不会对它分配内存空间。只有当某变量被说明为这种类型的结构时,才对该变量分配存储空间。
有了结构指针变量,就能更方便地访问结构变量的各个成员。其访问的一般形式为:
(*结构指针变量).成员名
结构体指针变量->成员名
#include <stdio.h>
#include <stdlib.h>
int main()
{
struct Student
{
char cName[20];
int iNumber;
char cSex;
int iGrade;
}student={"Girl",2017,'w',2};
struct Student *pStruct;
pStruct = &student;
printf("Name:%s\n",(*pStruct).cName);
printf("Number:%d\n",pStruct->iNumber);
printf("Sex:%c\n",student.cSex);
}
通过上面的代码可见,以下三种用于结构成员的形式是完全等效的。
结构变量.成员名
(*结构指针变量).成员名
结构指针变量->成员名