写在前面:大家好K。首先为你点进这篇有趣的文章点赞?!文章在撰写过程中难免有疏漏和错误,欢迎你在下方留言指出文章的不足之处;如果觉得这篇文章对你有用,也欢迎你点赞和留下你的评论。更多内容请点进?我的博客K。?阅览。
1. 名字区分
// 指针变量定义方法 // 示例:定义一个指向int类型的指针,初始化为空 int * p = NULL;
众所周知,*在定义时标志这是指针,在使用时表示取内存单元内容;p是变量名。
这样被定义好后,可以对变量名p有两个操作:
- 查看
*p(p所指内容)的值,也可修改*p的值; - 查看
p(p本身存放了所指内存的地址值)的值,也可修改p的值(即修改其所指)
如果要定义指针常量、常量指针,加const的位置在*前或变量名p前,那么它俩该如何区分呢?
记忆方法
const含义是”常量“,那么
- 常量指针
申明示例:
const int * p = NULL或int const * p=Null
忽略int说明类型,*标志这是指针。∵const在*前,表示常量指针
- 指针常量
申明示例:
int * const p = NULL
*标志这是指针。∵*在cosnt前,表示指针常量
2. 用法区分
const含义:被
const修饰的量,在定义后就不能改变
*含义:
- 在定义时标志这是指针
- 在使用时表示取内存单元内容
2.1 常量指针 const *
申明示例:
const int * p = NULL或int const * p=Null
const修饰*
*的第一个含义,仅在定义变量时用。现在我们讨论的是使用时的区别,所以只看*的第二个含义–取内存单元内容
*被const修饰,表示*p是只读的,不能被修改值- 但是,
p是可以修改的,即可以重新指向另一个内存单元
2.2 指针常量 * const
申明示例:
int * const p = NULL
const修饰变量名p
const在*的后面,所以不关*的事。所以,*p(即内容值)可以随意修改p被const修饰,所以,p(即指向)不能被修改。
3. C++的引用与指针常量
定义示例:int &b = a;
查看文档可知,引用只可作为唯一一个变量的别名(在定义后就不能被修改成别的变量的别名)
使用时,a和b的值同时修改同时变化
是不是和指针常量很像:内容可改,而指向不能改
引用的内部实现就是一个指针常量,然后被高度封装以方便使用
发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/177722.html原文链接:https://javaforall.net
