在一个指针变量指向一个结构体时常常会用->操作符来使用结构体内部的成员,
下面是我们没有使用指针时,如何调用结构体内的成员,
#include<stdio.h>
struct stu
{
char name[20];
int age;
char number[20];
};
int main()
{
struct stu s1 = { "zhangsan",18,"321234543" };
struct stu s2 = { "lisi",20,"987678765" };
printf("%s %d %s\n", s1.name, s1.age, s1.number);
return 0;
}
下面输出,
下面我们设计一个指针,让这个指针变量存储结构体的地址,
struct stu* p1 = &s1;
下面我们看看如何使用这个p1指针变量来调用结构体成员,来达到相同的结果,
下面测试运行,
我们发现两行内容是一致的,
因为p1指向存放s1地址的那一块空间,我们对p1解应用,得到的就是s1的地址,所以(*p1)与s1是等价的,
下面用箭头(->)也有相同的效果,
这里要注意,我们使用了箭头就不需要再使用成员访问运算符(.)了,
我们来看一下运行结果,
我们发现运算结果是相同的,
接下来我们稍微总结一下,
对于结构体成员访问运算符(.)在两种情况下都可以使用,
但是箭头(->)只能搭配指针使用,箭头左边为指针变量,右边指向所要引用的结构体成员名