关于const的简单用法举列子介绍!
对于const,我想大部分人也是很陌生,毕竟在C语言语法中很少见,但是,笔者今天在学习C语言基础知识时候,见到了,经过一番苦思,及参考文献得到了一手的资料,于是兴趣走起,博客一篇来书写笔者的兴奋之情!
下面来看一下,笔者在“const” - C++ 搜索结果 (cplusplus.com)网站上面的搜索结果!https://cplusplus.com
很简单,最大的结果便是没有结果,对于const,我想应该不是C语言中的库函数,所以便在该网站上找不到所需要的内容,但是经过摸索,仍然还是有迹可循!!
下面通过一段浅显易懂的代码来进行理解:请跟着笔者文章来理解const:
- #include
- int main()
- {
- int a = 10;
- a = 20;
- printf("a=%d\n", a);
- return 0;
- }
我想,这段代码,读者100%都能理解
对于代码的最后运转结果也没有任何疑问,毕竟这个是刚开始学习C语言时候就接触的内容!
下面对于const的讲解就建立在该段代码的基础之上,请大家仔细辨别:
-
- #include
- int main()
- {
- const int a = 10; //加const前缀
- a = 20;
- printf("a=%d\n", a);
- return 0;
- }
在上述代码中,笔者做了一个稍微的改变,仅仅增加了一个const前缀,但是却.......??
对于该段代码vs直接就给报错,根本就是运行不出来,const在该段代码中,将a=10进行锁死了,不允许更改,根本就不能进行再次给a赋值!
有人或许会说,const不是c语言的语法,加上const前缀,肯定运行不出来,但是情况往往出现在意料之外:请看笔者用指针的方法来书写的代码:
- #include
- int main()
- {
- int a = 10;
- int* pa = &a;
-
- *pa = 20;
-
- printf("a=%d\n", a);
- return 0;
- }
这个是用指针的方法,通过&(取地址操作符)取a的地址,然后在进行赋值,这段代码对于初步学习过指针的人而言,也不是什么大问题!
代码的运行结果仍为a=20;
但是,看似指针与笔者想要表达的:关于const的简单举列子介绍,毫无关联,但是将const int a=10通过指针来改变,将会出现意想不到的结果!
- #include
- int main()
- {
- const int a = 10;
-
- int* pa = &a; //通过指针方法来进行取地址等操作
- *pa = 20;
-
- printf("a=%d\n", a);
- return 0;
- }
前面已经书写过,用普通方法来打印const int a=10的值已经没有办法,直接报错!
但是用指针的方法却是可以打印出来!
代码的运行结果如下所示:
这个方法还是通过取a的地址来进行更改a的数值!使得直接绕过了const的这个语法限制
但是:当对
int* pa = &a; //通过指针方法来进行取地址等操作
这一段代码前面也加const前缀时候,又出现了锁死的情况,也是直接报错不能进行更改!
- #include
- int main()
- {
- const int a = 10;
-
- const int* pa = &a;
- *pa = 20;
-
- printf("a=%d\n", a);
- return 0;
- }
下面是具体的代码运转报错情况!
到此为止,笔者所知道的关于const的用法已经描述完,若有不足之处,请联系笔者更改