• 好好学习,天天向上~
  • 欢迎欢迎~

 分类:c语言

C语言陷阱与技巧第12节,重要数据怎么保存?如何判断数据是否损坏?

C语言中的结构体是非常有用的复合数据类型,正是有了结构体,C语言在描述复杂问题时才能够得心应手。事实上,当初 Dennis Ritchie 开发C语言用于替换 B 语言,其中一个主要原因就是 B 语言不支持“结构体”式数据结构。 C语言中的结构体非常有用 例如,利用C语言描述人的...

lcc 3周前 (04-28) 28℃ 0评论 0

C语言陷阱与技巧第11节,sizeof(数组名)并不等于数组长度,怎样用它计算数组长度呢?

在C语言程序开发中,sizeof() 是一个常用,也是一个非常有用的关键字,程序员常常使用它来获取变量占用内存的字节数。 称 sizeof() 为“关键字”,是因为虽然 sizeof() 使用起来很像一个函数,但是它与函数还是有很大区别的,这一点本专栏之前的章节讨论过。 ...

lcc 3周前 (04-28) 39℃ 0评论 0

C语言陷阱与技巧第9节,在程序运行异常时,输出错误函数链路径

上一节提到在C语言程序开发中,调用函数时需要根据判断其输出或者处理是否符合预期,才能做下一步的处理,否则很可能会引发灾难性的结果。例如下面程序员小明写的这段C语言代码: double get_val() { ... return val; } int fun1()...

lcc 3周前 (04-28) 26℃ 0评论 0

C语言陷阱与技巧19节,#define atomic_read(v) ((v)->counter + 0)在宏定义后面加0有什么好处?怎样自定义一个自己的锁?

在阅读 Linux 内核源码时,发现了两个宏,相关的C语言代码如下,请看: #define atomic_read(v) ((v)->counter + 0) #define atomic64_read(v) ((v)->counter + 0) ...

lcc 3周前 (04-28) 18℃ 0评论 0

C语言陷阱与技巧第18节,函数式宏定义的“缺陷”,没有参数类型检查,产生多次副作用怎么办?

在之前的文章里,我们曾讨论C语言程序开发中 define 宏定义的“陷阱”之一就是可能会产生多次“副作用”,这也是C语言中函数式宏定义与真正函数的主要区别之一。显然,define 宏定义的这种“陷阱”会导致程序存在隐患,而且这种隐患造成的危害不亚于“野指针”。 C语言函数式宏定义...

lcc 3周前 (04-28) 16℃ 0评论 0

C语言陷阱与技巧第17节,如果有个条件很大可能不发生,怎样写出更高效率的程序

在学习C语言程序开发时,很多初学者常常会有一种“编程也不过如此”的错觉,这种感觉通常出现在刚刚学完C语言语法,且能够独立完成一些课后练习题的时候,初学者的信心会在这一时期达到顶峰。可能会觉得程序无非就是各种 if 条件判断,加上相应的逻辑处理。 程序员编写程序就是为了服务人的,程...

lcc 3周前 (04-28) 17℃ 0评论 0

C语言陷阱与技巧第15节,错误处理太麻烦,不写行不行?

在C语言程序开发中,调用一个有返回值的函数时,一般要对函数的返回值做判断,以确定函数是否按照预期执行。如果被调用函数没有按照预期执行,最好加上相应的错误处理代码,否则最终编译得到的C语言程序稳定性就不够好,遇到一点点意外,可能就不会正常工作了。 没有判断C语言函数的返回值,会有什...

lcc 3周前 (04-28) 17℃ 0评论 0

C语言陷阱与技巧第14节,数组操作的一些技巧,怎么只给一部分数组元素赋值?

数组是大多数编程语言中非常重要的语法,在C语言中尤为如此,可以认为C语言中的数组是一种复合数据类型——若干数据类型元素组合而成的集合。 之前的文章讨论过,数据结构决定代码逻辑和算法,换句话说也就是决定可以处理什么样的问题。C语言中的数组特别适合存储大量相同类型的元素,而且数组的各...

lcc 3周前 (04-28) 11℃ 0评论 0

C语言陷阱与技巧第13节,1字节(Byte)一定等于8位(bit)吗?C语言怎么操作位?

C语言没有类似于 Java 的“垃圾回收”等高级编程语言特性,也不像 python 那样无需显示声明类型就能使用变量,因此在很多人看来,C语言有些“低级”。但是C语言的这些“低级”也是 C语言的优点——使用C语言开发程序,程序员能够准确知道究竟使用了多少资源,以及哪些资源还在内存...

lcc 3周前 (04-28) 22℃ 0评论 0