C++ Const指针学习
Const指针
const指针顾名思义就是常量指针的意思。下面将通过一些具体例子说明const指针的几种用法。
const type *p 特性
- 防止使用p指针来修改p所指向的值,下面是最简单的错误例子;
1 #include <iostream> 2 3 using namespace std; 4 5 int main() 6 { 7 int yes = 100; 8 const int *p = &yes; 9 10 *p = 10; //Error assign! 11 12 return 0; 13 }
用g++编译的结果是:
error: assignment of read-only location ‘* p’.
- p所指向的依旧是变量,并不是常量,因此可以通过yes本身来修改值。基于这个原因,我觉得c++primer plus中将p称为指向一个常量对象的指针是不正确的,反而像编译结果一样,将其称为只读指针更加符合中文的含义;
- 将const变量的地址赋给普通指针是非法的,简单程序例子如下;
7 const int yes = 100; 8 int *p = &yes;
用g++编译的错误为:invalid conversion from ‘const int*’ to ‘int*’ .
- 将指针指向指针的const关系将遵循以上三条规则进行递归判断是否合法。同样不能将const 常量数组的地址赋给普通指针;不能将常量作为参数传递给非常量形参的函数。
- 可以修改p的值。
type * const p 特性
- 无法修改p的值,可以修改*p的值,我将其称为常量指针;
原文地址:https://segmentfault.com/a/1190000014090414
相关推荐
-
标准库 c/c++
2019-11-2
-
现代C++之理解decltype c/c++
2019-5-21
-
从暴力到 NAN 再到 NAPI——Node.js 原生模块开发方式变迁 c/c++
2019-3-28
-
Hash 的应用 c/c++
2019-3-29
-
配置CLion作为Qt5开发环境 c/c++
2019-5-22
-
通过OSG实现对模型的日照模拟 c/c++
2019-9-15
-
【C++】一种典型隐秘的多次delete的情况 c/c++
2019-3-28
-
用qt creator搭建开发、调试php扩展的环境 c/c++
2019-3-30
-
太过亲密往往不好——用non-member,non-friend替换member函数 c/c++
2019-9-2
-
c++ 实现 blocking queue c/c++
2020-6-15