通过指针访问结构体变量的成员
结构体变量与普通变量相同,在内存中都占据一块内存空间,同样可以定义一个指向结构体变量的指针。当程序中定义了一个指向结构体变量的指针后,可以通过“指针名→成员变量名”的方式访问结构体变量中的成员。
结构体指针的定义方式与一般指针类似,例如,定义一个指向struct Person结构体变量p的指针,并通过指针访问变量p中的成员,如例1所示。
例1 ptrStr.c
1 #include <stdio.h>
2 struct Person //定义结构体类型struct Person
3 {
4 int ID;
5 char name[10];
6 char sex;
7 };
8 int main()
9 {
10 struct Person p = { 0002,"zhouli",'F' }; //定义结结构体变量p
11 struct Person* ptr = &p; //定义指向变量p的指针ptr
12 printf("%04d\n", ptr->ID); //输出成员ID的值
13 printf("%s\n", ptr->name); //输出成员name的值
14 printf("%c\n", ptr->sex); //输出成员sex的值
15 return 0;
16 }
例1运行结果如图1所示。
图1 例1运行结果
在例1中,第2~7行代码定义了结构体类型struct Person;第10行代码定义了struct Person结构体变量p,并对其进行了初始化;第11行代码定义了一个指向结构体变量p的指针ptr;第12~14行代码分别通过指针ptr输出结构体变量p的各个成员值。由图1可知,通过结构体指针ptr成功访问了结构体变量p的各个成员。