关于C++中指针的理解

1.基础指针运用

若有

int a = 0;
int* p= &a;

则可将b视作是int*类型的变量,变量b储存的是变量a的地址,其中&a代表a变量的地址。一种常见的错误使用方式是:

 	 p= a;    //这种赋值方式错误

应修改为:

p= &a;    //这种赋值方式正确

总结:int *p; 变量名叫p,类型为int *,可存放一个int数据的地址,此外,有

*p=0

2.关于->

在 C++ 中,-> 是成员访问运算符,用于通过指针访问对象的成员。

假设有以下示例代码:

class MyClass {
public:
    int myMember;
};

MyClass* ptr = new MyClass();  // 创建 MyClass 对象的指针
//MyClass* ptr = & MyClass(); 
//如果你想使用对象的指针而不是动态分配的内存块,可以将 new 运算符替换为 & 运算符来获取对象的地址

ptr->myMember = 42;  // 使用 -> 访问 myMember 成员并赋值

在上述代码中,我们定义了一个名为 MyClass 的类,其中包含一个整数类型的成员变量 myMember。然后,我们创建了一个 MyClass 对象的指针 ptr,使用 new 运算符动态分配内存。

通过使用 -> 运算符,我们可以通过指针访问对象的成员。在示例中,我们使用 ptr->myMember 访问 MyClass 对象的 myMember 成员,并将其赋值为 42。

需要注意的是,在使用 -> 访问成员之前,确保指针指向有效的对象。另外,使用 new 创建对象后,需要在适当的时候使用 delete 运算符释放内存,以避免内存泄漏。

3.关于引用和指针

引用

引用是一个别名,它提供了对现有变量的另一个名称或别名。
引用必须在声明时初始化,并且不能重新绑定到另一个变量。
引用一旦绑定到一个变量,就可以像使用原始变量一样使用引用,而无需使用解引用操作符。
引用不能为null,必须始终引用有效的对象。
引用通常用于函数参数传递、函数返回值和在范围内引用对象。
示例:

int x = 5;
int& ref = x;  // 引用

ref = 10;  // 修改了x的值
std::cout << x;  // 输出10

指针

指针是一个变量,它存储另一个对象的内存地址。
指针可以指向任何类型的对象,包括基本类型、自定义类型和函数。
指针可以重新赋值为另一个内存地址,也可以为null(nullptr)。
通过使用解引用操作符(*)可以访问指针指向的对象。
指针需要显式地进行解引用和取址操作。
示例:

int x = 5;
int* ptr = &x;  // 指针

*ptr = 10;  // 修改了x的值
std::cout << x;  // 输出10

总结:

引用是一个别名,它提供了对现有变量的另一个名称,而指针是存储内存地址的变量。
引用必须在声明时初始化,而指针可以在之后进行初始化。
引用不可重新绑定,而指针可以重新指向其他对象。
引用不能为null,而指针可以为null。
引用使用起来类似于原始变量,而指针需要显式地进行解引用和取址操作。

  • 29
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Boreep

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值