概述
1、什么是指针?
程序中的每个变量和函数都位于内存的某个地方,所以都有独特的地址来标识它们的存储位置。这些地址取决于运行程序时将程序加载到内存的什么地方,所以程序每次运行时,这些地址可能都不同。
指针是可存储地址的变量。存储在指针中的地址可以是变量或其他数据的地址。
指针不仅仅是指向某地址的“指针”,还指向位于该地址的数据的类型。
2、定义指针
指针的定义类似于一般的变量,但类型名后跟一个星号,表示定义了一个指针而不是该类型的变量。
例如:
long* pnumber {};
pnumber 的类型是“指向long”,写为 long* 。这个指针只能存储 long 类型的变量的地址。尝试在其中存储非 long 类型的变量的地址,代码就不能编译通过。
因为初始化列表为空,所以这个语句把 pnumber 初始化为等价于 0 的指针,即不指向任何内容的地址。
等价于 0 的指针写为 nullptr,可以把它的显式指定为初始值:
long* pnumber {nullptr};
定义指针时,总是要初始化化它。如果还不能为指针提供期望的值,就将其初始化为 nullptr。
3、地址运算符
地址运算符 & 是一个一元运算符,它可以获取变量的地址。
& 运算符可以应用于任何类型的变量,但必须在对应类型的指针中存储地址。
使用 auto* 声明的变量只能用指针值初始化。使用其他类型的值初始化,会导致编译错误。
4、间接运算符
将间接运算符 * 应用于指针,可能访问指针所指向的内存位置的数据。
间接运算符这个名称来自于数据的访问是间接的这一事实。
5、指针的算术运算
可以对指针执行算术运算,修改它包含的地址。只能对指针进行加减运算,但可以比较指针,得到逻辑结果。
可以给指针加上一个整数(或等于整数的表达式),其结果是一个地址。也可以从指针中减去一个整数,其结果也是一个地址。
可以从一个指针中减去另一个指针,其结果是一个整数而不是地址。
其他运算算不能用于指针。
最后
以上就是刻苦金针菇为你收集整理的【C++】《C++ 17 入门经典》读书笔记 09----指针的全部内容,希望文章能够帮你解决【C++】《C++ 17 入门经典》读书笔记 09----指针所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复