*和->的区别

* 解引用(取指针指向的值),通过指针访问指针指向的对象

-> 等价于(*ptr).member

ptr->menber    等于 (*ptr).menber

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

class Person {
public:
    string name;
    int age;

    void sayHi() {
        cout << "Hi, 我是 " << name << ",今年 " << age << " 岁。" << endl;
    }
};

int main() {
    Person p;      // 创建一个实例
    // 栈上分配内存,调用构造函数,p变成一个对象的实例
/*
栈内存:
┌─────────────────────────┐
│ p                      │ ← 这是一个完整的 Person 实例
│   name = ""            │
│   age  = 20            │
└─────────────────────────┘
*/
    p.name = "小明";
    p.age = 20;

    // 创建一个指针,指向 p
    Person* ptr = &p;

    // 用 * 解引用访问
    (*ptr).sayHi();

    // 用 -> 简写访问
    ptr->sayHi();

    return 0;
}
  • Person* ptr = &p;ptr 是指向 p 的指针

  • (*ptr).sayHi(); → 解引用 ptr 得到 p,然后调用 sayHi

  • ptr->sayHi(); → 等价写法,更简洁

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值