关于const

理解一:

1、const在*前,内容不能变;

const int * p1; //const修饰的是int * p1,说明这个变量是不能变的,就是p1所指向的变量是常量变量

       表示不能通过指针p1修改它指向的内存单元的值,但是p1本身可以修改。


int const *p2=&i; //与p1相同,const修饰的是*p2(表示所指向的变量)说明p2所指的变量不能改变,也就是 指向常量变量;

不能修改p2指向的内存单元的值,但是可以修改p2使其指向其他的内存单元,这里p2指向了整形变量i。

所以p2=&j;修改p2,使其指向整形变量j,正确。

*p2=30;通过p2修改它所指向的内存单元的值,错误。


2、const在*后,指针不能变;

int *const p3=&i;//const修饰的是p3,说明指针变量的值不能改变,也就是不能让p3指针再指向其他值

p3本身指向整型变量的常指针,即p3初始化后不能再指向其他的内存单元,但是可以修改p3指向的内存单元的值。这里p3指向了整形变量i。

所以*p3=30;通过p3将变量i的值修改为2,正确。

p3=&j;修改p3,使其指向j,错误。



理解二:

const*,指针指向常量;const int * p1;//所指物是常量,而指针不是常量,可以不必须初始化。

int const *p2=&i;//p2取i的地址

*p2=30;//所指物是常量,所以错误

*const,指针本身为常量;int *const p3=&i;//指针本身为常量,必须初始化,且初始化为i的地址,不可修改

*p3=20;//修改p3所指向的内容

p3=&j;//指针自身是常量,所以错误

*const*,指针和所指物都是常量;


const int p1必须初始化,const int &p1必须初始化。



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值