常量指针与指针常量(const用法)
来源:互联网 发布:支付宝的网络权限设置 编辑:程序博客网 时间:2024/05/29 19:36
初了解,const是在C语言中为了提高程序的安全性和可靠性而用来修饰数据类型的,const修饰的数据类型是指常类型,常类型的变量或对象的值是不能被更新的,即相当于限定为“只读”的状态。
指针常量
即指向常量的指针,该指针所指向的是一个常量,常量的值不能通过解引用来改变,但是这个指针的指向可以改变
如:
const int *pa;int const *pa;
这两条语句实现的功能是相同的,均声明了一个指向常量的指针,这个常量pa本身是先被赋值了的,就不能通过解引用来改变pa的值,即*pa=d(d是一个新的值)是错的,想要通过访问pa中存储的常量的地址来间接改变常量的值是不能实现的,但是pa=&d(d是一个已声明的变量或常量);就是对的,因为指针的指向可以改变,指针内储存的地址是可以改变的。
常量指针
常量指针即指针本身的值是常量,即他储存的地址一旦定了就不能改变,但可以通过解引用来改变指针所指向的变量的值,即可以通过访问这个固定的地址来间接改变变量的值。
如:
int *const pa =&n;
这条语句的意思就是声明了一个常量指针pa初始化指向的是n,那么他就只能指向n,而不能再指向其他的变量了,即pa=&c(c是其他已声明的变量)就是错的不能实现的,但是可以通过解引用来改变变量的值,即*pa=d(d是已声明的整型变量)是可实现的,相当于通过访问指针储存的地址即n的地址来改变变量n的值。
技巧
在了解这个概念时,有看到一些前辈给的经验技巧来使这个概念变得通俗容易区分。
1.有说看const离谁更近一点,在忽略数据类型的情况下离变量近,那他限定的就是指针,即为常量指针,离指针*更近,那他限定的就是变量的值,即为指针常量。
2.也有说,看const在 * 的哪一侧,若const在 * 号的左侧,那么就是指针常量,若const在 * 的右侧,则为常量指针。
判断方法各有不同,但原理都是一样的。
例题
下列哪两个是等同的
int b;
A const int* a = &b;
B const* int a = &b;
C const int* const a = &b;
D int const* const a = &b;
解析:答案应该是CD。A选项声明的是指向常量的指针,即指针常量;B选项是一个错误的表示方法;C选项和D选项都表示声明的是指针本身为常量,他所指向的也是一个常量
- 指针常量与常量指针(const用法总结)
- 指针常量与常量指针(const用法总结)
- 常量指针与指针常量(const用法)
- 指针常量与常量指针(const用法总结)
- 指针常量与常量指针(const用法总结)
- C语言中的const用法以及常量指针与指针常量(有口诀!)
- Const用法总结(快速区分指针常量与常量指针)
- 常量指针和指针常量(const)
- const修饰指针的用法:常量指针和指针常量
- const指针常量指针与指针常量详解
- 指针和const的联系---常量指针与指针常量
- 常量指针(const*)和指针常量(*const)
- 指针常量与常量指针(转)
- 常量指针与指针常量(一)
- C/C++中的const--常量指针与指针常量
- C++中的const用法【01】----常量与指针
- 常量指针与指针常量
- 常量指针与指针常量
- 填写gradle下载地址
- 1到100求和
- DIY自己的Blog
- eclipse自动校验xml文件是否符合dtd\xsd约束
- 单个数相乘
- 常量指针与指针常量(const用法)
- 初次见面!双指针(小题一道)
- 欢迎使用CSDN-markdown编辑器
- 嗯
- 阶乘
- 9个循环4
- 余数和商 两位数乘一位数
- BZOJ2243 [SDOI2011]染色 题解&代码
- 挺好的 保存一下,有空看 《漫谈Objective-C :空段selector》