C语言const修饰变量和修饰指针详解

目录

const修饰变量

const修饰指针


const修饰变量

int main()
{
	const int num = 10;
	printf("num = %d\n",num);

	int* p = #
	*p = 20;
	printf("num = %d\n", num);


	return 0;
}

const修饰变量的时候,是在语法层面限制了const修改,但是本质上,num还是变量,是一种不能修改的变量。然而,const修饰的变量可以通过指针被“恶意”修改。

 const修饰指针

1.指针未用const修饰时,*p可以重新被赋值,p可以重新指向别的地址

int main()
{
	const int num = 10;
	printf("num = %d\n", num);

	//const放在*的左边
	//const放在*的右边
	int* p = #
	*p = 20;//ok

	int n = 1000;
	p = &n;//ok

	printf("num = %d\n", num);
	return 0;
}

 2.const放在*的左边:限制的指针指向的内容,也就是说:不能通过指针来修改指针指向的内容,但是指针变量是可以修改的,也就是指针指向其他变量的。

int main()
{
	const int num = 10;
	printf("num = %d\n", num);

	//const放在*的左边
	const int* p = #
	*p = 20;//err

	int n = 1000;
	p = &n;//ok

	printf("num = %d\n", num);
	return 0;
}

3.const 放在*的右边,限制的是指针变量本身,指针变量不能再指向其他对象,但是可以通过指针变量来修改指向的内容。

int main()
{
	const int num = 10;
	printf("num = %d\n", num);

	//const放在*的右边
	int* const  p = #
	*p = 20;//ok

	int n = 1000;
	p = &n;//err

	printf("num = %d\n", num);
	return 0;
}

4.const 放在*的右边和右边,限制的是指针变量本身和指针指向的内容,指针变量不能再指向其他对象,也不可以通过指针变量来修改指向的内容。

int main()
{
	const int num = 10;
	printf("num = %d\n", num);

	//const放在*的左边和右边
	const int* const  p = #
	*p = 20;//err

	int n = 1000;
	p = &n;//err

	printf("num = %d\n", num);
	return 0;
}

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值