5.4.3 使用指针访问结构成员

    C++提供了使用一种结构类型指针访问结构成员的方法,就是使用运算符"->"。

    指针变量->成员名

    这与“(*指针变量).成员名”是完全等价的,见代码5.7。

    代码5.7 使用指针访问结构成员StructMemberAccess


    <———————————-文件名:example507.cpp———————————————-> 01 #include<iostream> 02 int main() 03 { 04 using namespace std; 05 struct student//定义结构体student 06 { 07 char name[20]; 08 int age; 09 float weight; 10 }stu1={"Kaka",23,70};//在结构体定义的同时声明一个结构变量stu1,并初始化 11 student*p=&stu1;//使用结构变量stu1的地址为student型指针p初始化 12 //使用结构变量名访问结构成员 13 cout<<"姓名:"<<stu1.name<<",年龄:"<<stu1.age<<",体重:"<<stu1.weight<<endl; 14 //使用指针的间接形式访问结构成员 15 cout<<"姓名:"<<(p).name<<",年龄:"<<(p).age<<",体重:"<<(*p).weight<<endl; 16 //直接使用指针和->访问结构成员 17 cout<<"姓名:"<<p->name<<",年龄:"<<p->age<<",体重:"<<p->weight<<endl; 18 return 0; 19 }

    输出结果如下所示。


    姓名:Kaka,年龄:23,体重:70 姓名:Kaka,年龄:23,体重:70 姓名:Kaka,年龄:23,体重:70

    【代码解析】代码第17行,就是使用结构指针访问结构成员,并输出其相应的数值。

    输出结果证明,下列3种访问结构成员的方法是完全等效的。

    ❑结构变量.成员名

    ❑(*结构指针变量).成员名

    ❑结构指针变量->成员名