学习《C Primer Plus》---指针常量与常量指针
来源:互联网 发布:淘宝小工具 编辑:程序博客网 时间:2024/04/29 09:18
一,指针常量
指向常量的指针不能用于修改数值,考虑下列代码:
int rates[5] = {1,2,3,4,5}; const int * pd = rates; //pd指向数组开始处
第二行代码把pd声明为指向const int 的指针。这样,就不可以使用pd来修改它所指向的数值。
* pd = 10; //不允许 pd[2] = 20; //不允许 rates[0] = 100; //允许,因为rates不是常量
无论是采用指针符号还是数组符号,都不能使用pd修改所指向数据的值。但请注意因为rates并没有声明为常量,所以仍可以使用rates来修改其数值。另外,还可以让pd指向其他地址:
pd++; //让pd指向rates[1],这是允许的
通常把指向常量的指针用作函数参量,以表明函数不会用这个指针来修改数据。
二,常量指针
用关键字const来声明并初始化指针,以保证指针不会指向别处:
int rates[5] = {1,2,3,4,5}; int * const pc = rates; pc = &rates[2]; //不允许 *pc = 10; //可以,更改rates[0]的值
这样的指针仍然可用于修改数据,但它只能指向最初赋给它的地址。
三,指向常量的常量指针
int rates[5] = {1,2,3,4,5}; const int *const pc = rates; pc = &rates[2]; //不允许 *pc = 20; //不允许
四,关于指针赋值和const有一些规则需要注意。首先,将常量或非常量数据的地址赋给指向常量的指针是合法的:
int rates[5] = {1,2,3,4,5}; const int locked[4] = {11,22,33,44}; const int * pc = rates; //合法 pc = locked; //合法 pc = &rates[3]; //合法
然而,只有非常量数据的地址才可以赋给普通的指针:
int rates[5] = {1,2,3,4,5}; const int locked[4] = {11,22,33,44}; int * pnc = rates; //合法 pnc = locked; //非法 pnc = &rates[3]; //合法
这样的规则是合理的。否则,你就可以使用指针来修改被认为是常量的数据。
- 学习《C Primer Plus》---指针常量与常量指针
- c学习--指针常量与常量指针i
- C常量指针 与指针常量区别
- C常量指针 与指针常量区别
- 【C Prime Plus】学习笔记,Chapter 12, 指针常量和常量指针
- 常量指针与指针常量
- 常量指针与指针常量
- 常量指针与指针常量
- 常量指针与指针常量
- 常量指针与指针常量
- 常量指针与指针常量
- 常量指针与指针常量
- 指针常量与常量指针
- 指针常量与常量指针
- 指针常量与常量指针
- 常量指针与指针常量
- 常量指针与指针常量
- 常量指针与指针常量
- 自己写的一个数学库
- gravity和layout_gravity的区别
- 哥已成风
- dbutil总结
- 数据库 中的控制文件的添加移动
- 学习《C Primer Plus》---指针常量与常量指针
- SDK之 TreeView
- 关于EOF(文件结束符)问题的体会
- 匿名类型
- 用IO流去切割与合并文件
- PHP学习笔记-GD库作图
- DIV 滚动条
- Oracle 学习笔记之二 足球赛程统计问题
- Android应用程序如何获取root权限