c++ const修饰指针

#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 doubleconst pccc = rates;
	//pccc = &rates[2];不允许
	//*pccc = 92.99;不允许
}
 
 
 
 
 
 
 
 
 
 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值