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

lcc的文章

杂谈

为什么要学习C语言?C语言有什么用?

首先要明白的是,如今世界上很多大型的C语言程序项目,在几十年前就开始了。 Unix 操作系统的开发始于 1969 年,在 1972 年 Unix 开发团队使用C语言重写了它的几乎所有代码。实际上,创建C语言的一个很大的原因就是为了将 Unix 内核代码从程序集移动到更高级别的语言...

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

c语言

C语言陷阱与技巧第7节,define函数式宏定义的使用陷阱与技巧,使用do{}while(0)包裹代码的原因

上一节基于 usleep() 函数,使用若干行代码,简单实现了用于避免C语言程序陷入死循环的“超时”功能,并且为了方便之后的调用,我们还使用了 define 宏定义将“超时”代码封装成一个方法。相信读者已经发现 C语言中的 define 宏定义的强大了,它远远不止仅提供常数替换的...

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

c语言

C语言陷阱与技巧第6节,代码封装为函数就不可用了?

在C语言程序开发中,如果某个函数需要阻塞等待某些信息,最好将其加上超时限制,否则该函数可能会“无限等待”,将整个线程卡死,这一点上一节已经通过实例较为详细的讨论。但是C语言并没有提供“超时”语法,需要C语言程序员自己实现一套“超时”机制。 避免“繁琐”的代码,小明的困惑 不过,...

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

c语言

C语言陷阱与技巧第3节,怎样主动让出CPU?如何为C语言函数增加超时检测功能

在Linux C语言程序开发中,这个场景经常出现:进程 A 负责驱动数据采集装置获取数据,进程 B 则负责接收数据并处理。显然,进程 B 需要等待进程 A 将一次数据采集完毕才可以进行下一步工作,因此约定进程 A 采集一次数据完毕时,将 ready 位由 0 置 1,进程 B 监...

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

c语言

C语言经典面试题详解第20节

同样一个问题,可能新手程序员和高手程序员都能解决,但是高手程序员往往能够写出运行效率更高的程序,这一点在C语言程序开发中尤为明显。这主要是因为高手们技术功底更扎实,能够对编写的代码做出适当的优化,写出较少冗余啰嗦的代码段。 “自作聪明”的C语言编译器 不过,即使高手程序员也是从...

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

c语言

C语言面试题详解第19节

招聘公司在笔试或者面试中,基本上不可能不考字符串。C语言中的字符串是一种相对简单的数据结构,但也确实能够从某种程度上,考察出求职者对C语言一些细节掌握程度,因此面试官常常喜欢反复的问一些字符串相关的问题。事实上,字符串也是一个能够考验程序员编程规范和编程习惯的重要考点,作为求职者...

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

c语言

C语言面试题详解第18节

上一节讨论了有趣的“迷宫问题”,我们一起基于栈这种数据结构编写C语言程序,找到了从迷宫起点到迷宫终点的路线。 深度优先和广度优先 现在回想上一节的内容,应该能够发现,因为数据结构栈“先进后出”的特性,C语言程序在寻找迷宫终点的过程中,遇到分岔口时,总是先把所有可能的路线做好记号,...

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

c语言

C语言面试题详解第17节

上一节介绍了C语言程序开发中常用的数据结构链表,知道了链表特别适合用于处理数量会动态变化,并且允许线性遍历的数据。其实不止如此,数据结构决定算法的设计,有什么样的数据结构,就可以使用什么用的算法,本节再来一起看看C语言程序开发中另外一种常用的数据结构——栈,并且本节将以一个有趣的...

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

linux笔记

Linux学习第30节,内核中互斥锁的设计,及其C语言代码实现

上一节主要讨论了 Linux 内核中的信号量,知道了持有信号量的线程可以睡眠,因此如果有一段临界区需要较长时间的保护,与自旋锁相比,选择信号量无疑是更合适的。多数用户使用信号量只使用计数 1,这时的信号量其实就是一个互斥的排它锁——好比允许睡眠的自旋锁。 事实上,相对于自旋锁,...

2个月前 (03-22) 169℃ 0评论 1