黑马程序员技术交流社区

标题: const修饰符与 const指针 [打印本页]

作者: huguozhang    时间: 2015-7-9 16:51
标题: const修饰符与 const指针

/*

        记忆技巧

            看const 和 * 的位置

            如果 const 在 * 左侧 表示指针变量指向变量的值不能改变,但是指向可以改变

     

            如果 const 在 * 右侧 表示指针变量指向变量的值可以改变,但是指向不能改变

     

            如果 const 出现在 * 两侧 表示指针变量指向变量的值和指向都不能改变

     */


/*

    const

        是一个类型修饰符

        使用const修饰变量则可以让变量的值不能改变

        常类型是指使用类型修饰符const说明的类型,常类型的变量或对象的值是不能被更新的。

    (1)   const int Max=100; int Array[Max];

    (2) 便于进行类型检查,如果被改变编译器会报错

    (3) 可以让保护的值 免于被修改

    (4) 可以节省空间  提高效率

     ...

    const的使用

        1) 修饰变量

            int a = 10;

   

        2) 修饰指针变量

        3) 修饰数组

*/

void demo2(){

    int a= 5;

    int b=10;

   

    //此处的const的作用是指针变量p的指向可以改变,但是指向的变量的值不能改变的

   

    //1、const修饰的指针变量指向可变,指向的变量的值不可变

    const int *p = &a; //给p初始化

    p = &b;  //重新修改了p的指向

    // *P = 1000;  这样是错误的

   

    int const *p1 = &a;

    p1 = p;

    // *p1=100; 这样是错误的

   

    printf("a=%d\n",a);

   

    //2、const修饰的指针变量,指针变量指向的变量值可以变,指向不能变

    int  * const p2 = &a;

    *p2 = 2000; //值可以改变

    // p2 = &b;  这样是错误的 p2的指向不能变

   

    //3、const修饰的指针变量的指向和值,都不能改变

    const int * const p3=&a;

    // p3 = &b;  //指向不能变

    // *p3 = 100;//指向的变量的值也不能变

   

   


}



作者: 毛琳东    时间: 2015-7-9 20:13
赞一个   !!!




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2