C++primer 的定义
注意:C++primer的常量指针和网上的说法是不一样(相反)的,而书中没有 “指针常量”的说法,有的只是“指向常量的指针”。 因此,在面试的时候可以按照网络的说法来回答,而理解可以按书中的说法来理解。
在C++primer说到:“要辨别这些声明的含义最行之有效的方式是从右向左阅读”,例如
1. int* const p
2. const int* p
对于1来说,离变量p最近的是const,说明p是个常量,然后是 "*"号,说明p是一个指针,然后是“int”说明p指向了一个int类型。结合起来就是说,p是个指向int类型的 常量指针。
而对于2来说,离变量p最近的是“*”,说明p是一个指针,然后是int,说明p是一个指向整型的指针,最后是const,说明指向的那个整型是不可修改的常量。因此,2中是一个指向常量的指针。
易错:
int a = 0;
int b = 0;
int * const p = &a;
p = &b; //改变p指向的东西,错误
const int a = 0;
const int*p = &a;
int *q = &a; //试图一个普通指针指向常量对象,因此是报错的。
网络的定义
//const* 是常量指针,*const 是指针常量
int const *a; //a指针所指向的内存里的值不变,即(*a)不变
int *const a; //a指针所指向的内存地址不变,即a不变
225

被折叠的 条评论
为什么被折叠?



