指针和const
(1)int age=30;
const int * pt=&age;
表示 *pt 是一个const ,即不能通过使用pt来修改这个值,但可以直接通过age变量来修改age的值, 也可以将新地址赋给pt.
(2)int age=30;
int * const pt=&age;
表示pt是一个const ,即pt只能指向age, 但允许使用pt来修改age的值。
(3)int age=30;
const int * const pt=&age;
表示pt和*pt都是const.
区别在于const与*的相对位置,而int与const的位置可互换。
即 int const*pt 与 const int * pt 是一个意思。
...................................................................分割线.............................................................................................
以下是几条规则:
1. 可以将const变量的地址赋给指向const的指针,但不能将const变量的地址赋给常规指针。
const int age=30; const int age=30;
const int * pt=&age; √ int *pt=&age; ×
2. 仅当只有一层间接关系(如指针指向基本数据类型)时,才可以将非const地址或指针赋给const指针。
int age=30;
int *pt=&age;
const int *pt_1=pt; √
3. 禁止将常量数组的地址作为参数传递给使用非常量形参的函数。
浙公网安备 33010602011771号