例7.3 指向结构体
变量的指针的应用。
#include <iostream>
#include <string>
using namespace std;
int main( )
{struct Student //声明结构体类型student
{ int num;
string name;
char sex;
float score;
};
Student stu; //定义Student类型的变量stu
Student *p=&stu; //定义p为指向Student类型数据的指针变量并指向stu
stu.num=10301; //对stu中的成员赋值
stu.name=″Wang Fun″; //对string变量可以直接赋值
stu.sex=′f′;
stu.score=89.5;
cot<<stu. num<<″ ″<<stu.name<<″ ″<<stu.sex<<″ ″<<stu.score<<endl;
cout<<(*p)>num<<″ ″<<(*p).name<<″ ″<<(*p).sex<<″ ″<<(*p).score<<endl;
return 0;
}

程序运行结果如下:
10301 Wang Fun f 89.5 (通过结构体变量名引用成员)
10301 Wang Fun f 89.5 (通过指针引用结构体变量中的成员)
两个cout语句输
出的结果是相同的。
为了使用方便
和使之直观,
C++提供了指向
结构体变量的
运算符->,
例如p->num表示
指针p当
前指向的结构体
变量中的成员num。
p->num 和(*p).num
等价。同样,
p->name等价于(*p).name。
也就是说,
以下3种形式等价:
① 结构体变量.成员名。
如stu.num。
② (*p).成员名。
如(*p).num。
③ p->成员名。
如p->num。“->”称
为指向运算符。
请分析以下几种运算:
p->n 得到p指向的
结构体变量中的成员n的值。
p->n++ 得到p指向的
结构体变量中的成员n的值
,用完该值后使它加1。
++p->n 得到p指向的
结构体变量中的成员n的值,
并使之加1,然后再使用它。
评论