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

posted @ 2011-07-01 22:15  shiney  阅读(1186)  评论(0)    收藏  举报