深度理解指针(1)补充——const

让我们来了解一下const的使用吧

(1)、const修饰普通变量

#include<stdio.h>
int main()
{
	const int a = 10;
	a = 20;
	printf("%d\n", a);
	return 0;
}

这种情况下编译器会报错,原因是表达式不是可修改的左值。a是常变量,在c语言中a一般会认为是变量,但不可以被修改。但在c++语言中a为常量。

但通过地址可以进行修改,这样就破坏了对a的限制。

#include<stdio.h>
int main()
{
	const int a = 10;
	int* pa = &a;
	*pa = 20;
	printf("%d\n", a);
	return 0;
}

(2)、const修饰指针变量

改变变量两种方式:1、通过改变地址内容来进行修改

#include<stdio.h>
int main()
{
	int a1 = 0;
	int* pa1 = &a1;
	int a2 = 10;
	pa1 = &a2;
	printf("%d\n", *pa1);
	return 0;
}

相当于一开始将a1的地址赋给指针变量pa1,将修改值a2的地址赋予给pa1这样就通过改变pa1的地址内容,进而pa1所指向的变量。

2、直接修改原有地址所指向的变量

#include<stdio.h>
int main()
{
	int a = 10;
	int* pa = &a;
	*pa = 20;
	printf("%d\n", a);
	return 0;
}

>1.const放在 * 的左边:const int* pa

#include<stdio.h>
int main()
{
	int a1 = 0;
	const int* pa1 = &a1;
	int a2 = 20;
	pa1 = &a2;
	printf("%d", *pa1);
	return 0;
}

指针所指向的内容不能通过指针来进行修改,但指针变量本身的值可以修改。 

>2.const放在 * 的右边:int* const pa

#include<stdio.h>
int main()
{
	int a1 = 0;
	int* const pa1 = &a1;
	*pa1 = 20;
	printf("%d\n", a1);
	return 0;
}

指针所指向的内容可以修改,但指针变量本身不能被修改。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值