const与指针

文章探讨了const关键字在指针声明中的不同位置对指针行为的影响,如限制内存空间内容修改或指针地址修改。通过实例和编译器报错分析,解释了const在int*、const*int和int*const三种情况下的作用差异。
摘要由CSDN通过智能技术生成

const关键字多出现在指针变量声明的时候,但是const的位置多变,在不同的位置意义不同

1.const int * a

这是最常见的情况

测试代码如下:

#include<stdio.h>
int main()
{
	int num1 = 7;
	int num2 = 8;
	const int* a = &num1;


	*a = 9;
	a = &num2;
    return 0;
}

在VS环境下,编译器报错

 报错位置

说明一个问题:const放在该位置让指针变量不能通过解引用修改指向的内存空间的内容,但是能修改指针变量指向的位置

2.int const * a 

#include<stdio.h>
int main()
{
	int num1 = 7;
	int num2 = 8;
    int const * a = &num1;


	*a = 9;
	a = &num2;
    return 0;
}

编译器同样报错

并且报错位置相同,所以const放在此位置作用与第一种情况完全相同,其原因是声明指针变量a时,const的位置都在*a之前,表明指向内存空间的值不能被该指针修改

3.int * const a 

#include<stdio.h>
int main()
{
	int num1 = 7;
	int num2 = 8;
    int * const a = &num1;


	*a = 9;
	a = &num2;
	return 0;
}

编译器同样报错,但是这次报错的位置不同了

 

这表明:const在该位置时,修饰的指针变量指向的位置不能被修改,但是能修改指向的内存空间存放内容

 

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

迷梦y

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值