C语言: 关于const操作的简单理解

1.const修饰变量

const关键字是constant的缩写,翻译为常量、常数。

通常由const修饰的变量不可修改。

int main()
{
	const int a = 10;//a具有了常属性(不能被修改了)
	//a 是不是常量呢?虽然a是不能被修改的,但是本质上还是变量
	//常变量
	// 
	a = 20;
	//在C++ 中const修饰的变量就是常量
	//
	int arr[a];
	printf("%d\n", a);

	return 0;
}

 从上述中我们可知尽管变量a被const所修饰,但只是具有了常属性,其本质仍然是变量。

 但是我们可以间接修改a的值,如下

int main()
{
	const int a = 10;
	//a = 20;//err


	int* p = &a;
	*p = 0;

	printf("a = %d\n", a);

	return 0;
}

即通过指针访问a的地址来修改a的值。


 

2.const修饰指针(左址右值)
 2.1 const在*的左边

我们可以知道p中存放了一个地址,则*p可以访问该地址对应的值,同时p也有一个属于自己的地址

const 修饰指针变量时,放在*的左边,限制的是指针指向的内容,不能通过指针来修改指向的内容,但是可以修改指针变量本身的值(修改的指针变量的指向)。

int main()
{
	int a = 10;
	int b = 20;
	int const * p = &a;
	p = &b;//ok
	*p = 100;//err
	//const 修饰指针变量时,放在*的左边,限制的是指针指向的内容,不能通过指针来修改指向的内容
	//但是可以修改指针变量本身的值(修改的指针变量的指向)

	return 0;
}
 2.2 const 在*的右边

const 修饰指针变量的时候,放在*的右边const 限制的是指针变量本身,指针变量不能再指向其他变量了,但是可以通过指针变量,修改指针变量指向的内容

int main()
{
	int a = 10;//&a--0x0012ff40
	int b = 20;//&b--0x0012ff44

	int  * const p = &a;//0x0012ff40
    p = &b;//err
	*p = 100;
	printf("%d\n", a);

	//const 修饰指针变量的时候,放在*的右边
	//const 限制的是指针变量本身,指针变量不能再指向其他变量了
	//但是可以通过指针变量,修改指针变量指向的内容
	//
	return 0;
}
3.const修饰函数参数
#include<stdio.h>
int myFunc(const int* p)
{
	*p = *p + 1;
	return *p;
}

const修饰函数参数,对参数起到限定的作用, 但是通过指针也能修改其值。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值