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修饰变量的理解,如果存在错误,请各位读者在评论区进行指正,我在此由衷的表示感谢!!!!