关于指针赋值和const的疑惑
以下摘自《C Primer Plus》第10章:数组和指针,第6节:保护数组中的数据。第301页。人民邮电出版社 2016年4月第一版
关于指针赋值和const需要注意一些规则。首先,把const数据或非const数据的地址初始化为指向const的指针或为其赋值是合法的:
double rates[5]={88.99, 100.12, 59.45, 183.11, 340.5};
const double locked[4]={0.08, 0.075, 0.0725, 0.07};
const double*pc=rates; //有效;
pc=locked; //有效;
pc=&rates[3]; //有效;
疑问:“把const数据或非const数据的地址初始化为指向const的指针”这句话什么意思?
书中一共写了3个例子:
const double*pc=rates; //有效;
pc=locked; //有效;
pc=&rates[3]; //有效;
我觉得第一个例子应该是代表“非const数据的地址初始化为指向const的指针”这句话的。
可是第一个例子不是初始化指针pc么?这跟“非const数据的地址初始化为指向const的指针”矛盾吗?我理解这句话的意思是,把非const的数据初始化,接着把这个非const的数据变成一个指针。
我是不是理解错了?
关于指针赋值和const需要注意一些规则。首先,把const数据或非const数据的地址初始化为指向const的指针或为其赋值是合法的:
double rates[5]={88.99, 100.12, 59.45, 183.11, 340.5};
const double locked[4]={0.08, 0.075, 0.0725, 0.07};
const double*pc=rates; //有效;
pc=locked; //有效;
pc=&rates[3]; //有效;
疑问:“把const数据或非const数据的地址初始化为指向const的指针”这句话什么意思?
书中一共写了3个例子:
const double*pc=rates; //有效;
pc=locked; //有效;
pc=&rates[3]; //有效;
我觉得第一个例子应该是代表“非const数据的地址初始化为指向const的指针”这句话的。
可是第一个例子不是初始化指针pc么?这跟“非const数据的地址初始化为指向const的指针”矛盾吗?我理解这句话的意思是,把非const的数据初始化,接着把这个非const的数据变成一个指针。
我是不是理解错了?
...全文
相关推荐
浅谈const变量赋值报错分析
在C++编程中,关于const变量赋值的问题经常引起注意,尤其是在处理指针类型的转换时。首先,我们需要明确的是,将变量赋值为常量是合法的,例如将`char`类型的变量赋给`const char`类型的
函数指针和指针函数,const的用法,指针常量,常量指针的用法
通过以上介绍,我们可以看出函数指针和指针函数有着本质的区别,同时正确使用 `const` 可以帮助我们更好地控制程序的行为,提高程序的安全性和效率。
深入const int *p与int * const p的区别详解(常量指针与指向常量的指针)
"深入理解C++中的const关键字在指针中的应用,包括常量指针、指向常量的指针以及指向常量的常量指针的差异和使用规则。"在C++编程中,const关键字用于声明常量,它可以用于变量、函数参数和
const指针赋值注意事项[源码]
正确的声明方式是使用const修饰指针,例如声明一个指向const double类型的指针,形式为const double *pnc。关于const和非const数据地址的赋值,规则相对清晰。
CONST指针指针
因此,`const`指针可以赋值给普通指针,但反之不行。3. **const修饰指针本身和指针所指的变量(或对象)** 这种情况是`const`同时修饰指针和指针所指的变量,两者都不能改变。


