c++ const修饰指针

来源:互联网 发布:微信红包埋雷软件 编辑:程序博客网 时间:2024/05/19 20:46
#include <stdio.h> #define MONTH 12void main() {const int days[MONTH] = {11,22,33,44,55,55,66,77,88,88,99,99};//days[4] = 11;编译错误 指向常亮的指针不能用于修改数值 double rates[5] = {88.99,100.12,59.45,183.11,11.11};const double *pd = rates;//pd指向数组的开始处//*pd = 28.89;不允许//pd[2] = 22.22;不允许rates[2] = 99.99;//允许 因为rates不是常量//无论是采用数组符号还是指针符号,都不能使用pd修改所指向数据得值,但注意了因为rates并没有声明为常量,所以仍可以使用rates来修改其数值,另外要注意,还可以让pc指向其他地址pd++;//让pd指向rate【1】 //关于指针赋值和const有一些规则需要注意,首先,将常量或非常量数据的地址赋给指向常量的指针是合法的:double rate[5] = { 88.99,100.12,59.45,183.11,340.65 };const double locked[4] = { 0.08,0.1,0.2,0.3 };const double *pc = rates;//合法pc = locked;//合法pc = &rates[3];//合法//然而,只有非常量数据的地址才可以赋给普通的指针:double rates[5] = { 1.0,2.0,3.0,4.0,5.0 };const double locked[4] = { 0.1,0.2,0.3,0.4 };double* pnc = rates;//合法//pnc = locked; 非法pnc = &rates[3];//合法//这样的规则是合法的,否则,您就可以使用指针来修改被认为是常量的的数据。  //const初始化指针来保证指针不会指向别处double rates[5] = { 1.0,2.0,3.0,4.0,5.0 };double * const pcc = rates;//pc指向数组的开始处//pcc = &rates[2];//不允许*pcc = 1.0;//可以,更改rates[0]的值//这样的指针仍然可以修改数据,但它只能指向最初赋给它的地址  //可以用两个const来创建指针,这个指针既不可以更改所指向的地址,也不可以修改所指向的数据double rates[5] = { 1.0,2.0,3.0,4.0,5.0 };const doubleconst pccc = rates;//pccc = &rates[2];不允许//*pccc = 92.99;不允许}          
原创粉丝点击