指针和const

来源:互联网 时间:1970-01-01

(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. 禁止将常量数组的地址作为参数传递给使用非常量形参的函数。


相关阅读:
Top