问题描述:
结构体指针可以通过 -> 操作符 来访问结构体中的成员吗?
问题解答:
可以的,比如下面的代码和结果。
// Created by 黑马程序员.
#include "iostream"
using namespace std;
//结构体定义
struct student
{
//成员列表
string name; //姓名
int age; //年龄
int score; //分数
};
int main() {
system("chcp 65001");
struct student stu = { "张三",18,100, };
struct student * p = &stu;
p->score = 80; //指针通过 -> 操作符可以访问成员
cout << "姓名:" << p->name << " 年龄:" << p->age << " 分数:" << p->score << endl;
system("pause");
return 0;
}
D:\CLion_code\cmake-build-debug\CLion_code.exe
Active code page: 65001
姓名:张三 年龄:18 分数:80
Press any key to continue . . .
是的,结构体指针确实可以通过 ->
操作符来访问结构体中的成员。你提供的代码示例正确地展示了这一点。
解释代码
-
结构体定义:定义了一个
student
结构体,包含name
、age
和score
成员。 -
结构体实例:创建了一个
student
结构体变量stu
,并初始化其成员。 -
指针定义:定义了一个指向
student
结构体的指针p
,并将其指向stu
的地址。 -
使用
->
操作符:通过指针p
,使用->
操作符访问和修改结构体成员score
。 -
输出结果:最后,通过指针
p
输出结构体成员的值。
输出结果
运行代码时,输出为:
D:\CLion_code\cmake-build-debug\CLion_code.exe
Active code page: 65001
姓名:张三 年龄:18 分数:80
Press any key to continue . . .
这表明 score
的值成功修改为 80
,并且通过指针访问结构体成员的方式是正确的。