指针和const常量

#include "stdafx.h"
int main()
{
	int me=1,my=2,mine=3;
	printf("me:%d\n", me);
	printf("&me:%d\n\n",&me);
	printf("my:%d\n", my);
	printf("&my:%d\n\n", &my);
	printf("mine:%d\n", mine);
	printf("&mine:%d\n\n", &mine);

	const int* p1 = &me;//p1可变,*p1不可变,此时不能用*p1来修改,但是p1可以转向
	printf("p1:%d\n", p1);
	printf("*p1:%d\n", *p1);
	printf("&p1:%d\n\n", &p1);
	
	int* const p2 = &my;//p2不可变,*p2可变,此时允许*p2来修改其值,但是p2不能转向。
	printf("p2:%d\n", p2);
	printf("*p2:%d\n", *p2);
	printf("&p2:%d\n\n", &p2);

	const int* const p3 = &mine;//p3不可变,*p3也不可变,此时既不能用*p3来修改其值,也不能转向
	printf("p3:%d\n", p3);
	printf("*p3:%d\n", *p3);
	printf("&p3:%d\n\n", &p3);

	p1 = p2;
	printf("p1:%d\n", p1);
	printf("*p1:%d\n", *p1);//p1转向了,因此,*p1的值有了改变
	printf("&p1:%d\n\n", &p1);

	*p2 = *p3;
	printf("my:%d\n", my);
	printf("p2:%d\n", p2);
	printf("*p2:%d\n", *p2);//使用*p2修改了值
	printf("&p2:%d\n\n", &p2);

	///
#if 0	//验证!!!
	p1 = p2;//可变,正确
	p2 = p1;//不可变,错误
	p3 = p2;//不可变,错误
	*p1 = *p2;//不可变,错误
	*p2 = *p1;//可变,正确
	*p3 = *p2;//不可变,错误
#endif
	while (1);
    return 0;
}

 

 

 

 

const指针可以接受const和非const地址,但是非const指针只能接受非const地址。所以const指针的能力更强一些,所以尽量多用const指针,这是一种习惯。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值