C语言 百分网手机站

c语言中那些被忽略的知识点

时间:2020-10-02 12:33:49 C语言 我要投稿

c语言中那些被忽略的知识点

  导语:C语言的设计目标是提供一种能以简易的方式编译、处理低级存储器、产生少量的机器码以及不需要任何运行环境支持便能运行的编程语言。下面我们来看看c语言中那些被忽略的知识点,希望对大家有所帮助。

c语言中那些被忽略的知识点

  c语言作为程序员来说,是入门语言。c语言的教材也是多的数不胜数,但是呢,有的c语言教材100-200多页,有的教材600页+,然而很多学者都是学的前者教材。

  为什么大家常说的简单的c语言都可以编写那么厚的教材?其一,c语言并不简单,或者说,敢说c语言简单的人都不是一般人;其二,c语言知识点覆盖面广,200多页的教材只是教会了你怎么用,并没有教会你多少实质性内容;其三,很多实用的知识点,在200多页的教材也并没有体现出来。

  今天我们主要聊聊那些一般不被重用的,但是却对提升代码质量和效率有奇佳效果的知识点。实话说,没有进公司前,我也忽略了这些,有一些甚至上学期间都没见过。好糗。

  正在看这篇文章的朋友,如果你还在上学阶段,请告诉我,你听过"断言"这个名词吗?如果没听过,接下来我就给你好好说说,让你了解了解,如果你听过,给你点赞。

  1.程序一般分为两个版本,Debug和Release版本.Debug版本用于内部调试,Release版本给用户使用。断言的关键字是assert.先看下面一个实例。

  代码功能不用多解释,随便写的一个算法。断言assert用于检查"不应该"发生的情况。如上代码在运行的时候,如果assert的参数为假,那么程序会在assert中止,同时会提示你在哪个文件的多少行出现了什么错误,也就是assert所在的位置。

  需要格外注意的是,assert不是一个函数,是宏。程序员可以把assert看成一个在任何系统状态下都可以安全使用的无害测试手段。并且,使用assert可以省略if else的判断,并且他比if else更智能。如果程序在assert终止,并不是说含有该assert的函数有错误,而是调用者除了差错,assert可以更方便的帮助我们找到发生错误的原因。

  2.assert作为一个宏,原型定义在中,如下图,就是判断表达式的真假来反馈给程序员信息。

  3.任何事物的`出现都有利和弊,assert也是如此,他的缺点是,如果频繁调用assert,会极大地影响到程序的性能,增加格外的开销。所以,工具虽好用,可不要贪用哦。在调试结束后,可以在“#include ”前加 #define NDEBUG来禁用assert.如下:

  4.了解了断言assert,在实际使用中,务必注意以下点:

  ①使用断言捕捉不应该发生的非法情况。不要混淆非法情况与错误情况的区别,后者是必然存在并且是一定要解决的bug。

  ②assert可以放在程序中的任何位置,但是一般放在程序的入口处,检查参数的有效性或合法性。

  ③在编写函数的时候,要清楚在该函数中,我要做哪些假定,一旦确定了的假定,就需要使用断言对假定进行检查。

  ④越来越多的程序员都有了保证程序的健壮性的意识,很好。也就是进行了很多防错设计,当进行防错设计时,如果“不可能发生的事”的确发生了,就需要使用断言报警。

【c语言中那些被忽略的知识点】相关文章:

C语言中的运算规则10-08

C语言中的字符(char)10-07

C语言中的链接编写10-07

C语言中的assert用法10-07

c语言中default的用法10-05

c语言中free的用法10-04

C语言中的指针解读10-04

c语言中bit的用法10-04

C 语言中宏的使用11-29