1

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的值,我将其称为常量指针;

Fangye
20 声望4 粉丝

从底层硬件开始,从C语言单片机开始,逐渐从底层到上层学习,现在学习Android平台的应用安全问题、C++爱好者。


下一篇 »
SpringMVC学习