再学C/C++ 之 指针常量 和 常量指针

(1)指针常量,将指针的指向当成常量。即指针变量的值只能在定义的时候初始化,定义后不能修改,也就是说不能改变指针变量的指向。可是不影响所指对象的访问特征。其定义形式为:html

类型 * const 指针
//类型是该指针所指对象的类型,*为指针类型说明符。

实例1:spa

int var1 = 100;
    int var2 = 200;

    //初始化指针常量,
    int *const const_P1 = &var1;
    //指针常量值定义指针的指向不能修改,
    //如,这里将const_P1指向var2的地址,就错了,
        //下面的语句会报错
    const_P1 = &var2;
    //可是,指针常量不影响指针所指对象的访问特征,
    //即,这里能够修改const_P1的对象的值
    *const_P1 = 200;

    //输出200;
    cout << *const_P1 << endl;
    //输出200;
    cout << var1 << endl;

 

(2)常量指针,又称为指向常量的指针,意思是,将指针所指的对象当成一个常量,即其访问特征为常量,可是,指针的指向可变。定义的形式:指针

类型 const * 指针
或者
const 类型 * 指针
//类型是该指针所指对象的类型,*为指针类型说明符。

实例2:code

    int var1 = 100;
    const int var2 = 200;

    const int * P1;
    const int * P2;
    P1 = &var1;
    //上面的语句将P1指向var2,就是将其访问特性设置为常量,即不可修改,
    //因此下面的语句会报错。
    *P1 = 1000;
    //常量指针不影响指针的指向,因此这里能够从新指向var2
    P1 = &var2;

注意:a、常量指针,不管所指的对象是否为常量,均不能经过*p修改。htm

   b、为了保证标识常量的只读性,常量的地址只能赋给常量指针(即指向常量的指针)。对象

 

(3)总结的来讲,指针常量,就是把指针当成常量(指向不可变);常量指针,就是把所指对象当成常量。blog

 

若是读者,对此仍是记不住的话,能够参考这篇文章:http://www.cnblogs.com/jonnyyu/archive/2005/06/19/89766.htmlclass

相关文章
相关标签/搜索