日记 [2006年06月09日] const * 常量 修饰符 与 指针

#include <iostream.h>

void main()
{
?int var1 = 10, var2 = 20;
?int * p1;
?const int * p2;//意思是他所指向的*p2是一个常量,我们无法通过p2来修改它所指向的对象
?????//说白了就是*p2 = newData;错误
?int const * p3;//注意这种定义形式和const int * p2效果一样的。
?
?int * const p4 = &var1;//注意这里定义的是常量指针,意味着必须初始化,并且以后不能够修改指针再去指向其他变量,但是他所指向的指可以修改
?
?const int * const p5 = &var1;?//不用说了阿我们只能够用他们而不能够修改任何东西,也就是只读
?int const * const p6 = &var1;?//同上

?//验证:意思是他所指向的*p2是一个常量,我们无法通过p2来修改它所指向的对象
?//初始化
?p2 = &var1;
?p3 = p2;
?
?cout << "{var1=" << var1 << "}{*p2=" << *p2 << "}"
??<< "{*p3=" << *p3 << "}" << endl;

?cout << "期望修改var1=" << var1 << "的内容"<< endl;
?var1++;
?cout << "var1++,var1=" << var1 << "自加后" << endl;

?cout << "期望修改*p2=" << *p2 << "的内容,通过(*p2)++"<< endl;
?//(*p2)++;//error
?cout << "(*p2)++;l-value specifies const object,也就是说(*p2)为常量不可修改,注意上面我们修改了var1" << endl;
?


?//证明:注意这里定义的是常量指针,意味着必须初始化,并且以后不能够修改指针再去指向其他变量,但是他所指向的指可以修改
?cout << "int * const p4 = &var1\n(*p4)++,";
?(*p4)++;
?cout << (*p4);//可以修改
?//p4 = &var2;//error:l-value specifies const object,p4是常量

?//对于p5和p6应该不难理解了吧
?//补充下,如果你通过变量的两个属性入手一样可以解答问题,
?//就是变量的类型和变量的内容数值
?//const int * p1,p1内容数值是一个整形变量的地址;
?//类型是const int * 也就是它是int *,并且他经过*运算后的东西是常量
// int *const p3,p3内容数值是一个整形变量的地址;因为const离类型近
?//类型是int * const 也就是它是int *,并且他的内容是const,因为const离变量近


}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值