原创 闫小林 C语言入门到精通 2020-12-31

收录于话题

#小林C++代码基础

95个

点击上方“C语言入门到精通”,选择置顶

第一时间关注程序猿身边的故事


9.5 C++指向结构体变量的指针_c++


作者

闫小林

白天搬砖,晚上做梦。我有故事,你有酒么?


C++通过指向结构体变量的指针引用结构体变量中的成员
 
C++中,一个结构体变量的指针就是该变量所占据的内存段的起始地址,指针变量也可以用来指向结构体数组中的元素。  C++提供了指向结构体变量的运算符->,例如:

p->num;//表示指针p当前指向的结构体变量中的成员num

p->num 和(*  p).num 等价,同样,p->namep->name等价于(*p).name。
在C++中,以下3种形式等价:  

  • 结构体变量.成员名,如stu.num。

  • (*p).成员名,如( *p).num。

  • p->成员名,如p->num,->称为指向运算符。 


p->n;//得到p指向的结构体变量中的成员n值。
p->n++;//得到p指向的结构体变量中的成员n的值,用完该值后使它加1。
++p->n;//得到p指向的结构体变量中的成员n的值,并使之加1,然后再使用它。

经典案例:C++指向结构体变量的指针。
#include<iostream>//预处理
using namespace std;//命名空间 
int main()//主函数 
{
  struct Student{ //自定义结构体变量 
    int num;//学号 
    char sex;//性别 
    int age;//年龄 
  };
  Student stu;//定义Student类型的变量stu 
  Student *point=&stu;//定义point为指向Student类型数据的指针变量并指向stu 
  stu.num=1001;//赋值 
  stu.sex='M';//赋值 
  stu.age=21;//赋值 
  cout<<stu.num<<endl;//输出学号 
  cout<<stu.sex<<endl//输出性别
  cout<<stu.age<<endl//输出年龄 
  cout<<"--------"<<endl
  cout<<(*point).num<<endl;//输出学号
  cout<<(*point).sex<<endl;//输出性别
  cout<<(*point).age<<endl;//输出年龄 
  return 0//函数返回值为0;
}

编译运行结果:

1001
M
21
--------
1001
M
21

--------------------------------
Process exited after 0.08501 seconds with return value 0
请按任意键继续. . .