const int a; int const a; const int *a; int * const a; int const * const a ; const int * const 之间的区别

来源:互联网 发布:认识奢侈品的软件 编辑:程序博客网 时间:2024/05/27 02:27

const int a; int const a; const int *a;int const *a; int * const a; int const * const a ; const int * const 之间的区别

这个问题非常容易搞混,C++ primier书上提供了一种助记方法:(从变量名开始从右往左读)来理解一下这三者的字面意思: 

const int* p;    // ip is a pointer to const int

int const* p;    // ip is a pointer to int const

int* const p;    // ip is a const pointer to int


  1. const int a; int const a; 这两个写法是等同的,表示a是一个int常量。

  2. const int *a和int const *a含义相同; 表示a是一个指针,可以任意指向int常量或者int变量,它总是把它所指向的目标当作一个int常量。即不能通过指针来修改它指向的值;

  3. int * const a; 表示a是一个指针常量,初始化的时候必须固定指向一个int变量,之后就不能再指向别的地方了。  

  4. int const * const a和const int* const a含义相同;表示a是一个指针常量,初始化的时候必须固定指向一个int常量或者int变量,之后就不能再指向别的地方了,它总是把它所指向的目标当作一个int常量。即既初始化后不能再指向别的地方,也不能通过指针改变指针指向的值。

1 0