int const, const int *,int *const,int const *const 区别

本文详细解析了C/C++中const关键字与指针结合使用的不同情况,并通过实例演示了指针指向不可变与指针自身不可变的区别。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

今天做了一个题,关于这个问题。


const int a =1 / int const a=1变量a的值不能改变
const int *a=&b指针变量a指向的值不能改变
int * const a=&b指针的指向不能改变
int const  *const a=&b指针指向不能改变,指向的值也不能改变

很多人分享了一个经验,就是如果const 位于*的左侧,则const就是用来修饰指针所指向的变量,指针指向常量。如果const位于*的右侧,const修饰就是指针本身,指针本身就是常量,也就是指针指向不能改变。

        当我学习这里的是时候,我还是不太明白 const int *a=&b  和 int * const a=&b的区别,指针的指向不能变和指针指向的值不能变是什么意思?我们直接看代码。

int mian()
{
    	int a=100;
	int *b=&a;
	*b=3;
    return 0;
}
        
        也就是说我们通过*b把a的值进行了改变,这样一来我就明白了了 const int *a=&b  和 int * const a=&b的区别了,指针的指向不能变,指针指向的值不能变就很明显了。其实就是不能通过*a来改变b的值。

       现在我们直接看最后一个,第一个const位于*的左侧,又有一个位于*的右侧,因此这个指向不能改变,指向的值也不能变。

        再说一下自己对指针的理解,我们知道任何一个变量都有一个地址,比方说  int a=5;

int main()
{
      int a=5;
      int *b=&a;
      return 0;
}
这个简单的例子可以比较形象的说明指针。
int main()
{
	int a=248;

	const int b =21;

	const int *c=&a;
	int * const d=&a;
	int const * const e =&a;
     return 0;
}
在编译器上看到的结果也是比较明显的。根据const 在*的左侧或者是右侧,在左侧就是修饰的就是指针指向的变量不能改变,在右侧就是指针本身的指向不能改变。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值