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

举报
念君思宁 发表于 2023/02/16 18:15:02 2023/02/16
【摘要】 关于const的用法简单举列子介绍

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

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

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

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

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

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

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

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

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

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

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

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

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。