C++ Const指针学习

Const指针

const指针顾名思义就是常量指针的意思。下面将经过一些具体例子说明const指针的几种用法。ios

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++编译的结果是:c++

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的值,我将其称为常量指针;
相关文章
相关标签/搜索