C语言编程技巧杂烩
本专栏总结和汇总了本人使用和学习过程中,关于C语言编程的一些细节,技巧,容易出错点等内容
rex_nie
这个作者很懒,什么都没留下…
展开
-
C中的总线错误和段错误
最近写了个基于linux的日志系统,中途遇到了两个错误: bus error(core dumped)和segmentation fault(core dumped)。 这两个错误非常的折磨人,错误信息对引起这两种错误的源代码错误并未作简单的解释,上面的信息并未提供如何从代码中寻找错误的线索。所以往往很难定位到具体出错在哪里。大多数的问题都出于这样一个事实:错误就是操作系统(OS)所检测到...原创 2018-05-20 01:36:08 · 1832 阅读 · 0 评论 -
有用的C语言工具
用于检查源代码的工具 工具 工具简要说明 参考链接 indent linux下代码格式化工具 Linux 代码格式化工具 indent astyle 一个开源的代码格式化工具,可美化C,C++,C++/CLI,Objective‑C,C#,Java等各种语言,还可集成到IDE,强烈推荐 Astyle:代码格式化工具简明指南 Linux下C/C...原创 2018-05-20 01:35:27 · 1143 阅读 · 0 评论 -
理解C语言声明的优先级规则
C语言的声明有时会很长,让人感到恐惧。这里描述了一种方法,用通俗的语言把声明分解开来,分别解释各个组成部分。理解C语言声明的优先级规则的步骤声明从它的名字开始读起,然后按照优先级顺序依次读取。优先级从高到低依次是:声明中被括号括起来的那部分后缀操作符: 括号()表示这是一个函数, 方括号[]表示这是一个数组前缀操作符:星号*表示“指向…的指针”如果const和(或)...原创 2018-05-20 01:34:35 · 405 阅读 · 0 评论 -
C语言常被搞错的运算符优先级
C语言的运算符有优先级和结合性两个属性,而且相同的符号存在复用的情况,所以很容易造成错误。这里有个建议,多给表达式加上括号,可以提高代码的可读性和减少错误的发生。C语言运算符优先级存在的问题 优先级问题 表达式 人们可能误以为的结果 实际结果 .的优先级高于*->操作符用于消除...原创 2018-05-20 01:27:49 · 309 阅读 · 0 评论 -
C语言中容易混淆的const关键字
const关键字是ANSI标准新增加的关键字。const是个类型限定符,可以和任何类型说明符一起使用,以指定被声明对象的特殊属性。C语言的类型说明符包括: - void - char - short - int - long - float - double - signed - unsigned - 结构体说明符 - 联合体说明符 - 枚举说明符 - 类型定义名co...原创 2018-05-20 01:24:02 · 320 阅读 · 0 评论 -
对C语言中无符号类型的建议
算术类型转换首先给出一段C代码:int main(void){ if (-1 < (unsigned char)1) printf("true, ANSI C semantics\n"); else printf("false, K&R C semantics\n"); return 0;}这段程序分别在AN...原创 2018-05-20 01:22:38 · 403 阅读 · 0 评论 -
ANSI C定义的一些关于可移植性的术语说明
ANSI C标准定义了一些术语,用于描述某种编译器的特点。对这些术语有一个比较好的了解,对于提供代码的可移植性和错误的排查都有帮助的。不可移植的代码(unportable code)由编译器定义的(implementation-defined): 由编译器设计者决定采取何种行动,也就是说在不同的编译器中所采取的行为可能并不相同,但是它们都是正确的。每个编译器的文档会给出具体的行为方式。...原创 2018-05-05 17:35:44 · 290 阅读 · 0 评论 -
C语言版本迭代
和大多数编程语言一样,C语言版本迭代过程也经历了诞生,到被关注,被广泛使用,必须标准化,最后普及的过程。《C专家编程》一书有介绍C语言诞生及K&R C,ANSI C,ISO C等标准化的一些故事,有兴趣的可以去看看。作为程序员,我关心的是版本的标准迭代。1978年,C语言经典名著The C Programming Language出版了,该版本描述的C受到了广泛使用,被称为K&am...原创 2018-05-05 23:25:51 · 836 阅读 · 0 评论