【C++】《C++ 17 入门经典》读书笔记 09----指针

1、什么是指针?

程序中的每个变量和函数都位于内存的某个地方,所以都有独特的地址来标识它们的存储位置。这些地址取决于运行程序时将程序加载到内存的什么地方,所以程序每次运行时,这些地址可能都不同。

指针是可存储地址的变量。存储在指针中的地址可以是变量或其他数据的地址。

指针不仅仅是指向某地址的“指针”,还指向位于该地址的数据的类型。

2、定义指针

指针的定义类似于一般的变量,但类型名后跟一个星号,表示定义了一个指针而不是该类型的变量。

例如:

long* pnumber {};

pnumber 的类型是“指向long”,写为 long* 。这个指针只能存储 long 类型的变量的地址。尝试在其中存储非 long 类型的变量的地址,代码就不能编译通过。

因为初始化列表为空,所以这个语句把 pnumber 初始化为等价于 0 的指针,即不指向任何内容的地址。

等价于 0 的指针写为 nullptr,可以把它的显式指定为初始值:

long* pnumber {nullptr};

定义指针时,总是要初始化化它。如果还不能为指针提供期望的值,就将其初始化为 nullptr。

3、地址运算符

地址运算符 & 是一个一元运算符,它可以获取变量的地址。

& 运算符可以应用于任何类型的变量,但必须在对应类型的指针中存储地址。

使用 auto* 声明的变量只能用指针值初始化。使用其他类型的值初始化,会导致编译错误。

4、间接运算符

将间接运算符 * 应用于指针,可能访问指针所指向的内存位置的数据。

间接运算符这个名称来自于数据的访问是间接的这一事实。

5、指针的算术运算

可以对指针执行算术运算,修改它包含的地址。只能对指针进行加减运算,但可以比较指针,得到逻辑结果。

可以给指针加上一个整数(或等于整数的表达式),其结果是一个地址。也可以从指针中减去一个整数,其结果也是一个地址。

可以从一个指针中减去另一个指针,其结果是一个整数而不是地址。

其他运算算不能用于指针。

 


 

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值