C++指针随记

本文介绍了C++中的指针,包括指针的定义、特性,如何通过指针访问对象,以及空指针的处理。指针作为一个对象,可以改变其所指向的对象,且允许为空。在使用指针前应确保其非空,以避免无效指针。文章强调了使用nullptr作为空指针初始化的推荐做法,避免使用0或NULL以减少潜在的类型转换问题。

复合类型

基于其它类型定义的类型,如:引用、指针


指针

定义:与引用类似,指针也实现了对其他对象的间接访问。而与引用不同的是,其一,指针本身就是一个对象,允许对指针赋值和拷贝,而且在指针的生命周期内它可以先后指向几个不同的对象。其二,指针无须在定义时赋值。

**指针值(即地址)**应处于下四种状态:

  • 指向一个对象
  • 指向紧邻对象所占空间的下一个位置
  • 空指针,意味着指针没有指向任何对象
  • 无效指针,上述情况之外的指针
利用指针访问对象

如果指针指向了一个对象,则允许使用解引用符(操作符*)来访问该对象:

某些符号有多重含义

int i = 42;
int &r = i;         //&紧随类型名出现,因此是声明的一部分,r是一个引用
int *p;             //*紧随类型名出现,因此是声明的一部分,p是一个指针
p = &i;             //&出现在表达式中,是一个取地址符
*p = i;             //*出现在表达式中,是一个解引用符
int &r2 = *p;       //&是神明的一部分,*是一个解引用符
空指针

空指针(null pointer)不指向任何对象,在试图使用一个指针前代码可以首先检查它是否为空。

int *p1 = nullptr;		//等价于int *p1 = 0
int *p2 = 0;			//直接将p2初始化为字面常量0
int *p3 = NULL;			//等价于int *p3 = 0 //#include "cstdlib"

空指针就是对指针的初始化


新标准下现在的C++程序最好使用nullptr,同时避免使用NULL。因为NULL是一种特殊类型的字面值,它可以被转换成任何其他的指针类型。

把int变量直接赋给指针是错误的操作,即使int变量的值恰好为0也不行

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

Atom明

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

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

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

打赏作者

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

抵扣说明:

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

余额充值