【C语言】const修饰的指针(详解)

const int * p (int const * p) 与 int * const p的区别

const 放在*号的左边作用一样,故 const int * p 与int const * p 两者等价。
这里就只拿const int * p 与int * const p 进行比较。

const放*左边

int main()
{
		int a = 10;
		const int * p = &a;
		/* const 放在*的左边,修饰的是*p,表示的是指针指向的内容,不能通过指针来改变
		 但是指针变量本身是可以被修改的*/
		int n = 20;
		*p = n; // 报错  指针指向的内容不能被修改
		p = &n; // 指针变量p可以修改
		
   return 0;
}

const放*右边

int main()
{
		int a = 10;
		int * const p = &a;
		 /*const 放在*的右边,修饰的是指针变量p本身,表示指针变量是不可以被修改的
		 但是 指针指向的内容可以被修改*/
		int n = 20;
		*p = n; // 指针指向的内容可以修改
		p = &n; //报错 指针变量p不能被修改
		
	return 0;
}

*左右都有const

若*的左边和右边都被加上了const,则*p(指针指向的内容)和p(指针变量本身)均不能被改变

总结

1. const int * p(int const * p) :const 放在*的左边,修饰的是*p,*p(指针指向的内容)不能被改变,p(指针变量本身)能被改变。
2. int * const p :const 放在*的右边,修饰的是*p,*p(指针指向的内容)能被改变,p(指针变量本身)不能被改变。
3. int const * const p (const int * const p),const 放在*的左边,修饰的是*p和p,*p(指针指向的内容)和p(指针变量本身)都不能被改变。
 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值