c语言中那些被忽略的知识点
导语:C语言的设计目标是提供一种能以简易的方式编译、处理低级存储器、产生少量的机器码以及不需要任何运行环境支持便能运行的编程语言。下面我们来看看c语言中那些被忽略的知识点,希望对大家有所帮助。
c语言作为程序员来说,是入门语言。c语言的教材也是多的数不胜数,但是呢,有的c语言教材100-200多页,有的教材600页+,然而很多学者都是学的前者教材。
为什么大家常说的简单的c语言都可以编写那么厚的教材?其一,c语言并不简单,或者说,敢说c语言简单的人都不是一般人;其二,c语言知识点覆盖面广,200多页的教材只是教会了你怎么用,并没有教会你多少实质性内容;其三,很多实用的知识点,在200多页的教材也并没有体现出来。
今天我们主要聊聊那些一般不被重用的,但是却对提升代码质量和效率有奇佳效果的知识点。实话说,没有进公司前,我也忽略了这些,有一些甚至上学期间都没见过。好糗。
正在看这篇文章的朋友,如果你还在上学阶段,请告诉我,你听过"断言"这个名词吗?如果没听过,接下来我就给你好好说说,让你了解了解,如果你听过,给你点赞。
1.程序一般分为两个版本,Debug和Release版本g版本用于内部调试,Release版本给用户使用。断言的关键字是assert.先看下面一个实例。
代码功能不用多解释,随便写的一个算法。断言assert用于检查"不应该"发生的情况。如上代码在运行的时候,如果assert的参数为假,那么程序会在assert中止,同时会提示你在哪个文件的多少行出现了什么错误,也就是assert所在的位置。
需要格外注意的是,assert不是一个函数,是宏。程序员可以把assert看成一个在任何系统状态下都可以安全使用的无害测试手段。并且,使用assert可以省略if else的判断,并且他比if else更智能。如果程序在assert终止,并不是说含有该assert的函数有错误,而是调用者除了差错,assert可以更方便的帮助我们找到发生错误的原因。
rt作为一个宏,原型定义在中,如下图,就是判断表达式的`真假来反馈给程序员信息。
3.任何事物的出现都有利和弊,assert也是如此,他的缺点是,如果频繁调用assert,会极大地影响到程序的性能,增加格外的开销。所以,工具虽好用,可不要贪用哦。在调试结束后,可以在“#include ”前加 #define NDEBUG来禁用assert.如下:
4.了解了断言assert,在实际使用中,务必注意以下点:
①使用断言捕捉不应该发生的非法情况。不要混淆非法情况与错误情况的区别,后者是必然存在并且是一定要解决的bug。
②assert可以放在程序中的任何位置,但是一般放在程序的入口处,检查参数的有效性或合法性。
③在编写函数的时候,要清楚在该函数中,我要做哪些假定,一旦确定了的假定,就需要使用断言对假定进行检查。
④越来越多的程序员都有了保证程序的健壮性的意识,很好。也就是进行了很多防错设计,当进行防错设计时,如果“不可能发生的事”的确发生了,就需要使用断言报警。
-
Mac系统怎样使用终端编写c语言程序
C语言是目前较为普遍的程序语言,它功能丰富、表达能力强、使用灵活方便、目标程序效率高,适合编制一般应用软件。下面是应届毕业生小编收集整理的Mac系统怎样使用终端编写c语言程序,希望对大家有帮助~~Mac系统使用终端编写c语言程序的'方法工具/原料Mac系统,终...
-
2017计算机二级C语言考点解析
大家在备考计算机二级考试时要掌握考点,这样复习才有方向,以下是本站小编整理的计算机二级C语言考点解析,更多计算机二级考试信息请继续关注应届毕业生考试网。8.1指针与指针变量的概念,指针与地址运算符1.在C语言中,指针是指一个变量的地址,通过变量的地址″指...
-
C语言main函数的参数
导语:main函数一般都是不带参数的,那么什么情况会带参数呢?让我们了解一下吧!一般main函数都是不带参数的。因此main后的括号都是空括号。实际上,main函数可以带参数,这个参数可以认为是main函数的形式参数。C语言规定main函数的参数只能有两个,习惯上这两个参数写...
-
C语言中文件操作详解及实例代码
在文件操作中除了打开操作以及读写操作,还有几种比较常见的操作。以下是本站小编搜索整理的关于这些操作中涉及到的函数,,需要的朋友可以参考本文!想了解更多相关信息请持续关注我们应届毕业生考试网!一.移动位置指针的函数rewind函数和fseek函数,这两个函数的原...