指针常量与常量指针
C++语言的一个复杂点是在指针上,在与const字符结合后,两者狼狈更是弄得人头晕,毕竟是好久没有用到的语法点,一时还真回不过神来,在这里写一段程序阐明其中的玄机。
char c1 = 'a';char c2 = 'b';
const char *L; //指针常量,指针指向的值不能改变
char const *M; //跟上面一样
char *const N = &c1; //常量指针,指针的地址不能改变
char const*const O = &c1; //指向常量的指针常量,地址和指向的值都不能改变
L = &c1; //OK
*L = c1; //error,改变了指向的值
N = &c2; //error,改变了指针的地址
*N = c2; //OK
O = &c2; //error,改变了地址
*O = c2; //error,改变了指向的值
不是看了程序后更糊涂了吧,其实不用管何谓“指针常量”、何谓“常量指针”,问题的关键在于:const与*的位置;const *M=const(*M),所以值*M(值)不能被改变; * const N= *(const N),所以N(地址)不能被改变。
没有评论:
发表评论