c,const和指针组合的几种意义
const和指针的组合:
注释部分表示非法。
int a =1; const int *p = 0; p=&a; //*p = 1 ; int const *pp = 0; pp= &a; //*pp = 1; int* const pv = 0; //pv=&a; *pv = 1; const int const *pavp = 0; //pavp = &a; //*pavp = 1; const int *const pbvp = 0; //pbvp = &a; //*pbvp = 1; int const* const pcvp =0 ; //pcvp = &a; //*pcvp = 1;
下面的代码可道出一个关键:因为C / C++里面没有const*的运算符,所以const只能属于前面的类型。
int a =1; typedef int* int_ptr; const int_ptr p=0; //p=&a; *p = 1; int_ptr const pa=0; //pa=&a; *p = 1;
const放在最前时,只能选择向右结合。
const int *p 就表示int是不变的, *p is a const 。
int* const p 就表示指针p不能更改,但其 *p则是可变的。