关于const与指针

来源:互联网 发布:郑州软件测试招聘 编辑:程序博客网 时间:2024/05/21 08:56

常量(const)指针和“指向常量(const)对象”的指针

定义常量指针时必须同时初始化它,以后不能更改它:

    int var;    int * const c_ptr = &var; //指向int的常量指针    *c_ptr = 123; //true:没有修改指向的对象,但可以修改指向的对象的值    ++c_ptr; //false:不能修改常量指针本身

指向常量(const)对象的指针:

    int var;    const int c_var = 100; //常量int对象    const int * ptr_to_const; //指向const int对象的指针,此时是指针本身不是常量    ptr_to_const = &c_var; //true    var = 2 * *ptr_to_const; //true    ptr_to_const = &var; //true    if(c_var < *ptr_to_const){        *ptr_to_const = 77; //false:虽然var不是常量,但是ptr_to_const这个指针指向的对象“const int”是个常量对象,所以无法修改它    }

可以将指向非常量的指针隐式转换为指向常量的指针:

    int *ptr = &var;    ptr_to_const = ptr;

但无法隐式地将指向常量的指针转换为指向非常量的指针:

    ptr = &c_var; //false    ptr = (int *)&c_var; //true

以上内容来自《c in a nutshell》
总结:const在*左侧则为指向某常量对象的指针,const在*右侧则为指向某对象的常量指针

0 0
原创粉丝点击