#include <stdio.h> #define MONTH 12 void 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 double* const pccc = rates; //pccc = &rates[2];不允许 //*pccc = 92.99;不允许 }
c++ const修饰指针
最新推荐文章于 2023-02-14 16:43:49 发布