const的使用

const是我们编写代码的时候常用的一个修饰词,但是它的使用情景很多,我们该如何区分它呢?今天我来说说我的理解,首先请看const修饰常量的情况:

从上图中我们可以看到,当const修饰一个常量的时候,那么这个常量就不可以通过它本身直接改变了,程序运行起来之后会报错,但是有些人可能会这样子写程序:

这样子的确可以改变n的值,但是这样子我可以举一个例子来说明:首先告诉你,你进这个房间只能用钥匙,你可倒好,没钥匙直接翻窗进去了,这样子是不符合常理的,当然这样子也可以,但是其实是不推荐这样子写的。const修饰的这个变量,从形式上来说它的确是常量不可改变了(刚刚那种情况除外)但是其实它本质上还是一个变量,只不过是不能修改的变量。接下来我们来看其他情况:

在来看一个例子:模拟实现strcpy函数

char* My_strcpy(char* dest,const char* source)
{
	assert(dest);
	assert(source);
	char* set = dest;
	while (*dest++ = *source++)
	{
		;
	}
	*dest = *source;
	return set;
}
int main()
{
	char arr1[20] = "xxxxxxxxxxxxxx";
	char arr2[] = "hello bit";
	char* set = My_strcpy(arr1,arr2);
	printf("%s", set);
	return 0;
}

我们从这里可以看到和上面一样的结论,我们只是要求把arr2的内容拷贝到arr1里,arr1可以改变,但是arr2的内容是绝对不能改变的,使用我们在传参的时候加上了const。

最后一个例子:

我们可以看到,当const在*左边和右边的时候限制的情况不一样:

1.const放在*的左边,限制指针指向的内容,也就是第一幅图的情况,这种情况就不能通过指针来修改指针指向的值,否则就会报错。

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

我们如何在编写代码的时候编写出高质量的代码呢?这个时候我们就要做到下面这几点了:

1. 代码运行正常
2. bug很少
3. 效率高
4. 可读性高
5. 可维护性高
6. 注释清晰
7. 文档齐全
常见的coding技巧:
1. 使用assert
2. 尽量使用const
3. 养成良好的编码风格
4. 添加必要的注释
5. 避免编码的陷阱。
以上就是我对const修饰变量的理解,如果存在错误,请各位读者在评论区进行指正,我在此由衷的表示感谢!!!!
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值