C++指针和const

来源:互联网 发布:sql server 默认值 编辑:程序博客网 时间:2024/06/04 18:59

指针指向的值为常量

int a = 1;const int *p = &a;  //指针p指向的值为常量,不能通过指针p来修改值*p = 2;  //这是错误的a = 2;  //a本身为普通变量,这是允许的

值得一提的是,非const变量的地址可以同时赋给const指针和非const指针,而const变量的地址只能赋给const指针不能赋给非const指针。
int a = 1;const int *p1;int *p2;p1 = &a;  //非const变量的地址赋给const指针p2 = &a;  //非const变量的地址赋给非const指针const int b = 1;p1 = &b;  //const变量的地址赋给const指针p2 = &b;  //const变量的地址赋给非const指针,这是不允许的
另外,多级指针之间的赋值情况会很复杂,只有是一级指针时,才能将非const变量的地址赋给const指针。
指针指向的值为常量,但指针本身不是常量,即可以让该指针指向别的变量。

指针本身为常量

int a = 1;int * const p = &a;  //定义的时候必须初始化
指针指向的值可以修改,但指针本身不能修改。因此定义的时候必须初始化。
也可以同时定义本身为常量并且指向的值也是常量的指针。
const int * const p = &a;  //p本身为常量,并且指向常量





原创粉丝点击