在 C++ 中,p->name 和 p.name 的效果并不相同。它们用于不同的情况,取决于你是否通过指针访问结构体成员。

p->name:这是指针访问运算符(箭头运算符)。当 p 是一个指向结构体的指针时,用 p->name 来访问结构体的成员。

student* p = &stu; // p 是一个指向 student 类型的指针
cout << p->name << endl; // 通过指针 p 访问 name 成员

p.name:这是点运算符。当 p 是一个结构体对象而不是指针时,用 p.name 来访问结构体的成员。

student stu = { "zhangsan", 3, 60 }; // stu 是一个 student 类型的对象
cout << stu.name << endl; // 通过对象 stu 访问 name 成员

具体的代码片段,以便更清楚地理解:

#include<iostream>
#include<cstdio>
using namespace std;

struct student {
    string name;
    int age;
    int score;
};

int main() {
    student stu = { "zhangsan", 3, 60 };
    student* p = &stu; // p 是指向 stu 的指针

    // 使用指针访问运算符 -> 来访问成员
    cout << "name: " << p->name << " age: " << p->age << " score: " << p->score << endl;

    // 使用对象和点运算符 . 来访问成员
    cout << "name: " << stu.name << " age: " << stu.age << " score: " << stu.score << endl;

    return 0;
}

运行上述代码,输出如下:

name: zhangsan age: 3 score: 60
name: zhangsan age: 3 score: 60

可以看到,通过指针 p 访问结构体成员和直接通过结构体对象 stu 访问成员,效果是一样的,但它们的访问方式不同:

  • 指针访问p->namep->agep->score
  • 对象访问stu.namestu.agestu.score

总结

  • 使用 -> 运算符用于通过指针访问结构体的成员。
  • 使用 . 运算符用于通过结构体对象访问其成员。

确保根据变量的类型(是指针还是对象)使用正确的运算符。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值