const在指针*号前后的区别

用const修饰指针有三种方法:

【1】. const int *p

【2】. int const *p

【3】. int * const p

【4】. const int * const p

可以这么理解,const修饰的是它右边的变量。如果const位于星号的左侧,则const就是用来修饰指针所指向的变量(既*p),即指针指向为常量;如果const位于星号的右侧,const就是修饰指针本身(既p),即指针本身指向的地址是常量。所以【1】和【2】的情况是一样的,const修饰的为*p,*p不可更改。【3】中const就是修饰的p,所以p的值不能更改。【4】就是两者的结合,所以无论是*p还是p都不能更改。

【1】、【2】 const在星号前如下:

    int num1 = 666;
	int num2 = 999;
	
	const int *p = &num1;
	//*p = 111;  错误 const修饰*p,*p不可修改 
	p = &num2;
	printf("p = %d\n", *p);

结果输出为:p = 999。

【3】const在星号后面如下:

    int num1 = 666;
	int num2 = 999;
	
	int * const p = &num1;
	*p = 111;   
	//p = &num2; 错误 const修饰p,p不可修改
	printf("p = %d\n", *p);

结果输出为:p = 111。

【4】星号前后都有const如下:

    int num1 = 666;
	int num2 = 999;
	
	const int * const p = &num1;
	//*p = 111;   错误,使用来了const修饰*p,*p不可修改
	//p = &num2; 错误,使用了const修饰p,p不可修改
	printf("p = %d\n", *p);

结果输出为:p = 666。

  • 24
    点赞
  • 35
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值