写出诗一样代码的灵丹妙药: 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如果在*的右边,修饰的是指针自身的内容。保证指针自身的内容不能通过指针改变。但是指针指向的内容可以改变。

代码举例:

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

代码案例:

目录
相关文章
|
5月前
|
存储 安全 编译器
C++入门:内联函数,auto,范围for循环,nullptr
C++入门:内联函数,auto,范围for循环,nullptr
|
7月前
|
C语言
const int *和int * const的区别【C语言/指针】
const int *和int * const的区别【C语言/指针】
31 0
|
7月前
|
安全 编译器 C语言
const函数和assert函数:提高代码质量的利器
const函数和assert函数:提高代码质量的利器
23 0
|
7月前
【C++11保姆级教程】新的函数声明(trailing return type)、右值引用(rvalue references)
【C++11保姆级教程】新的函数声明(trailing return type)、右值引用(rvalue references)
|
9月前
|
存储 编译器 C语言
【C++杂货铺】内联函数、auto、范围for、nullptr(一)
【C++杂货铺】内联函数、auto、范围for、nullptr(一)
42 0
|
9月前
|
编译器 程序员 C++
【C++杂货铺】内联函数、auto、范围for、nullptr(二)
【C++杂货铺】内联函数、auto、范围for、nullptr(二)
40 0
|
10月前
|
程序员 C语言
assert断言与const修饰指针的妙用(模拟实现strcpy函数)
assert断言与const修饰指针的妙用(模拟实现strcpy函数)
|
11月前
|
C++
【C/C++知识点】const与指针
【C/C++知识点】const与指针
51 0
|
11月前
|
编译器
const和指针的故事
const和指针的故事
37 0
|
JavaScript Dubbo 小程序
答应我, 不要再用 if (obj != null) 判空了
答应我, 不要再用 if (obj != null) 判空了