C++:指针与const

229 阅读1分钟
1.常量指针

声明方法:

const int *p = &i;
int const *p = &i;//两种方法等价。

作用:不可更改指向地址的内容,但可修改指向地址。

int i = 1;
int j = 2;
const int *p = &i;
//int const *p = &i;
*p = 3; //错误,常量指针不可以修改指向地址的内容
p = &j; //正确,常量指针可以修改指向地址

2.指针常量

声明方法:

int* const p = &i;

作用:可更改指向地址的内容,但不可修改指向地址。

int i = 1;
int j = 2;
int* const p = &i;
*p = 3; //正确,指针常量可以修改指向地址的内容。
p = &j; //错误,指针常量不可以修改指向地址。


3.两者的组合

声明方法:

const int* const p = &i;
1
作用:不可更改指向地址的内容,也不可修改指向地址。

int i = 1;
int j =2;
const int* const p = &i;
*p =3; //错误
p = &j; //错误

4.常量与指针

只有常量指针可以指向常量,而普通指针、指针常量不行。常量指针不可以修改常量的值。

const int i = 1;
const int* pt = &i; //正确,常量指针可以指向常量
int* pi = &i; //错误,普通指针不可以指向常量。
int* const pr = &i; //错误,指针常量不可以指向常量。