指针与const限定符

来源:互联网 发布:零基础学钢琴 知乎 编辑:程序博客网 时间:2024/06/06 19:27

const限定符和指针结合起来常见的情况:

const int *a;

int const *a;


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


intconst a;

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

 

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;

 

原创粉丝点击