关于const的用法简单举列子介绍

简介: 关于const的用法简单举列子介绍

关于const的简单用法举列子介绍!


对于const,我想大部分人也是很陌生,毕竟在C语言语法中很少见,但是,笔者今天在学习C语言基础知识时候,见到了,经过一番苦思,及参考文献得到了一手的资料,于是兴趣走起,博客一篇来书写笔者的兴奋之情!


下面来看一下,笔者在“const” - C++ 搜索结果 (cplusplus.com)网站上面的搜索结果!https://cplusplus.com


0a2653c851af460fa595bd959398a8f1.png


很简单,最大的结果便是没有结果,对于const,我想应该不是C语言中的库函数,所以便在该网站上找不到所需要的内容,但是经过摸索,仍然还是有迹可循!!


下面通过一段浅显易懂的代码来进行理解:请跟着笔者文章来理解const:


#include <stdio.h>
int main()
{
  int a = 10;
  a = 20;
  printf("a=%d\n", a);
  return 0;
}

我想,这段代码,读者100%都能理解


6de278e6d6694ce5bb08e7e842b7e74b.png


对于代码的最后运转结果也没有任何疑问,毕竟这个是刚开始学习C语言时候就接触的内容!


下面对于const的讲解就建立在该段代码的基础之上,请大家仔细辨别:


#include <stdio.h>
int main()
{
  const int a = 10;    //加const前缀
  a = 20;
  printf("a=%d\n", a);
  return 0;
}

在上述代码中,笔者做了一个稍微的改变,仅仅增加了一个const前缀,但是却.......??


12c3b7f3f8814309a195c64f051d4445.png


对于该段代码vs直接就给报错,根本就是运行不出来,const在该段代码中,将a=10进行锁死了,不允许更改,根本就不能进行再次给a赋值!


有人或许会说,const不是c语言的语法,加上const前缀,肯定运行不出来,但是情况往往出现在意料之外:请看笔者用指针的方法来书写的代码:


#include <stdio.h>
int main()
{
  int a = 10;
  int* pa = &a;
  *pa = 20;
  printf("a=%d\n", a);
  return 0;
}

这个是用指针的方法,通过&(取地址操作符)取a的地址,然后在进行赋值,这段代码对于初步学习过指针的人而言,也不是什么大问题!


代码的运行结果仍为a=20;


34e8d716411043c08c7ffba9fbba23de.png


但是,看似指针与笔者想要表达的:关于const的简单举列子介绍,毫无关联,但是将const  int  a=10通过指针来改变,将会出现意想不到的结果!


#include <stdio.h>
int main()
{
  const int a = 10;
  int* pa = &a;   //通过指针方法来进行取地址等操作
  *pa = 20;
  printf("a=%d\n", a);
  return 0;
}

前面已经书写过,用普通方法来打印const  int  a=10的值已经没有办法,直接报错!


但是用指针的方法却是可以打印出来!


代码的运行结果如下所示:


#include <stdio.h>
int main()
{
  const int a = 10;
  int* pa = &a;   //通过指针方法来进行取地址等操作
  *pa = 20;
  printf("a=%d\n", a);
  return 0;
}


这个方法还是通过取a的地址来进行更改a的数值!使得直接绕过了const的这个语法限制


但是:当对


int* pa = &a;   //通过指针方法来进行取地址等操作

这一段代码前面也加const前缀时候,又出现了锁死的情况,也是直接报错不能进行更改!


#include <stdio.h>
int main()
{
  const int a = 10;
  const int* pa = &a;
  *pa = 20;
  printf("a=%d\n", a);
  return 0;
}

下面是具体的代码运转报错情况!

d79b274929334152a6d38be91e2d1be3.png


到此为止,笔者所知道的关于const的用法已经描述完,若有不足之处,请联系笔者更改


相关文章
|
8月前
|
C#
C#有趣小例子(三)
C#有趣小例子(三)
46 2
|
8月前
|
C#
C#的小例子和总结(二)
C#的小例子和总结(二)
46 0
|
4月前
|
Python
chatterbot简单例子|4-14
chatterbot简单例子|4-14
|
4月前
|
Shell Python
9-12| better_profanity例子
9-12| better_profanity例子
|
JavaScript 前端开发 测试技术
javascript的filter、map数组深浅拷贝之展开语法的奇技淫巧
javascript的filter、map数组深浅拷贝之展开语法的奇技淫巧
111 0
|
前端开发 JavaScript
一个简单的例子让你轻松地明白JavaScript中apply、call、bind三者的用法及区别
这篇文章也算是讲解了前端面试 常考的知识点 ,即关于JavaScript中apply、call、bind三者的用法及区别。 如果有些小伙伴已经对该知识有一定的了解了,可以直接跳到最后看 总结
133 0
|
Java Spring 数据采集
需要些例子
教您使用java爬虫gecco抓取JD全部商品信息教您使用DynamicGecco抓取JD全部商品信息 Gecco+Spring+Mybatis完整例子,下载妹子图美女图片 结合spring的插件gecco-spring 结合htmlunit的插件ge...
1058 0