03 February 2015

const与指针结合起来常用的情况:

  1. const int *a;
  2. int const *a;

这两种写法是一样的,a是一个指向const int型的指针,a所指向的内存单元不可写,所有(*a)++是不允许的,但是a可以改写,故a++是允许的

  1. int * const a;

a是一个指向int型的const指针,*a是可以改写的,但a不允许改写

  1. int const * const a;

a是一个指向const int型的const指针,因此*aa都不允许改写

指向非const变量的指针或者非const变量的地址可以传递给指向const变量的指针,编译器可以做隐式类型的转换

char c = 'a';
const char *pc = &c;

但是,指向const变量的指针或者const变量的地址不可以传给指向非const变量的指针,以免透过后者意外改写前者所指向的内存单元

const char c = 'a';
char *pc = &c;               //会产生警报