写出诗一样代码的灵丹妙药: const与assert

简介: 写出诗一样代码的灵丹妙药: const与assert

前言

在写代码的过程中,想必大家应该会时不时遇到一些自己写出来的bug,它跟幽灵一样时不时吓你一跳,让你触不及防,写的程序也会突然崩溃。在这种时候就得拿出我们的灵丹妙药const和assert来制裁它们了。

什么是const和assert

const是C语言关键字中的一种,const是constant的简写,用来定义常量,它限定一个变量不允许被改变,产生静态作用。const最开始推出的目的是为了取代预编译指令,取长补短。除此之外,const 更强大的地方是修饰函数参数、函数返回值、函数体。被 const 修饰的东西都受到强制保护,可以防止意外改动,提高程序的健壮性。

assert用百度百科的介绍,"在程序设计中,断言是一种放在程序中的一阶逻辑,目的是为了标示与验证程序开发者预期的结果-当程序运行到断言的位置时,对应的断言应该为真。若断言不为真时,程序会中止运行,并给出错误消息。"C语言的断言是通过assert语句来实现的,用于捕获运行时不应该发生的非法情况。如果在执行断言时,对应的断言为真,啥事都没有发生,如果对应的断言为假,编译器就会出现异常。

const与assert的作用

对于函数的入参,不管是什么数据类型,也不管是 指针传递,还是 引用传递,只要加了 const 修饰,就可以防止函数内意外修改该参数,起到保护作用。

const在修饰指针变量的时候,const如果放在*的左边,修饰的是指针指向的内容。保证指针指向的内容不能通过指针改变。但是指针自身的内容可以改变。

const如果在*的右边,修饰的是指针自身的内容。保证指针自身的内容不能通过指针改变。但是指针指向的内容可以改变。

代码举例:

断言的作用就是编码人员在开发期间应该对函数的参数、代码中间执行结果合理地使用断言机制,确保程序的缺陷尽量在测试阶段被发现。

代码案例:

目录
相关文章
实验:逆向分析sample_mal.exe文件
实验:逆向分析sample_mal.exe文件
|
机器学习/深度学习 算法
AdaBoost算法
**AdaBoost** 是一种 Boosting 算法,通过序列训练弱分类器并赋予错误分类样本更大权重,逐步构建强分类器。它使用指数损失函数,每次迭代时,弱分类器聚焦于前一轮分类错误的样本。最终,弱分类器的预测结果按其性能加权组合成强分类器。与 Bagging 相比,Boosting 是串行的,每个模型依赖前一个模型的输出,更重视错误样本。AdaBoost 的优点包括提高弱分类器性能、鲁棒性和灵活性,但对噪声敏感且训练时间可能较长。
|
存储 JavaScript API
vite+vue3+ts从0到1搭建企业级项目(3)
vite+vue3+ts从0到1搭建企业级项目
359 0
|
数据采集
FOXBORO H92A049E0700 具备数据采集和分析功能
FOXBORO H92A049E0700是美国福克斯波罗公司生产的高质量、稳定性的工业自动化产品,广泛应用于电力、石油、化工等行业,具备先进技术、高灵活性及可扩展性,适用于过程控制、数据采集与分析等场景。
170 2
|
Java 关系型数据库 MySQL
基于JSP的高校二手交易平台
基于JSP的高校二手交易平台
|
SQL NoSQL 关系型数据库
javaweb实训第四天上午——MySQL基础(1)
1 课程介绍 1.数据库概述(了解) 2.MySQL的安装与配置(掌握) 3.MySQL数据库操作与存储引擎(掌握) 4.查询操作-单表查询(掌握) 2 数据库概述 2.1 数据库概念
165 0
|
编译器 API C++
python 外部传参程序编写并打包exe及其调用方式
每种编程语言相互联系又相互独立,为此使用某种编程语言编写的程序都能够独立封装和生成自己的运行程序exe或者其他的API接口。而对于这样的运行程序目的往往不是用于双击使其运行的,而是通过外部传入的参数运行其中的内核函数达到某种目的的。所以在此研究python如何编写外部传参的程序,并将其封装未exe便于外部使用。
1121 0
python 外部传参程序编写并打包exe及其调用方式
|
弹性计算 网络协议 小程序
阿里云建站云企业官网标准版、高级版和尊贵版功能区别、价格选择说明
阿里云建站云·企业官网定制分为标准版、高级版和尊贵版三个版本,标准版云企业官网4980元一年送半年,续费980元;标准版云企业官网6980元一年送半年,续费1980元;尊贵版云企业官网9980元一年送半年,续费2980元一年;旗舰版云企业官方设计费首年7000元,第二年续费仅支付SaaS系统费用,旗舰版SaaS系统价格为4480元/年。新手站长网来简单说下各个版本之间的区别:
860 0
阿里云建站云企业官网标准版、高级版和尊贵版功能区别、价格选择说明
|
弹性计算 安全 Linux
ECS所以体验
在我看来云服务器有以下优点:省力,不需要专门花时间去维护服务器的硬件,看服务器是否运行正常;稳定,这应该是最主要的有点;安全,做web开发最怕的当然是攻击,所以选择大厂的服务器,自然是最香的;省钱,这当然也是很重要的,尤其对于我们学生用户还是很友好的,爆赞!
|
机器学习/深度学习 算法 Java
12月14日云栖精选夜读 | 为什么要学习Python?这10个理由足够了!
如果你定期关注现今的科技发展,那么你可能想知道我为什么要写这篇文章告诉人们学习Python?因为几年前我提倡Java而不是Python。 在2016年,Python取代Java成为高校中最受欢迎的语言,从那时起它受欢迎的程度就没有减退过。
3036 0