Linus Torvalds 指针

《对话Linus Torvalds:大多黑客甚至连指针都未理解》
http://www.csdn.net/article/2013-01-10/2813559-two-star-programming

“不懂指针”的开发者代码示例:


 1 typedef struct node
2 {
3 struct node * next;
4 ....
5 } node;
6
7 typedef bool (* remove_fn)(node const * v);
8
9 // Remove all nodes from the supplied list for which the
10 // supplied remove function returns true.
11 // Returns the new head of the list.
12 node * remove_if(node * head, remove_fn rm)
13 {
14 for (node * prev = NULL, * curr = head; curr != NULL; )
15 {
16 node * next = curr->next;
17 if (rm(curr))
18 {
19 if (prev)
20 prev->next = curr->next;
21 else
22 head = curr->next;
23 free(curr);
24 }
25 else
26 prev = curr;
27 curr = next;
28 }
29 return head;
30 }

Linus Torvalds提供的解决方案:


 1 void remove_if(node ** head, remove_fn rm)
2 {
3 for (node** curr = head; *curr; )
4 {
5 node * entry = *curr;
6 if (rm(entry))
7 {
8 *curr = entry->next;
9 free(entry);
10 }
11 else
12 curr = &entry->next;
13 }
14 }

时间: 2024-11-09 09:59:10

Linus Torvalds 指针的相关文章

Linux之父Linus Torvalds:讨厌C++

"Linux内核的创始人Linus Torvalds最近在一封邮件中说明了内核开发需要使用C语言而非C++的理由.在庞大的项目中,人们对不是自己开发的模块并不了解,能快速理解其他模块中函数的 确切含义才能提高开发效率,而C++引入的各种抽象则使代码变得晦涩难读. 另外Linus还认为C++的内存管理方式很弱智(that idiotic "new" keyword in C++).邮件最后的总结是:很显然C并不适合所有项目,不过C++?还是算了吧.垃圾回收和并发等等,这些才是真

Git 10 周年之际,创始人 Linus Torvalds 访谈

点这里 十年前的这一周,linux 内核社区面临一个根本性的挑战:他们不再能够使用他们的修复控制系统:BitKeeper,同时其他的软件配置管理遇到了对分布式系统的新需求.Linus Torvalds,Linux的创始人,将这个挑战接手并消失了数周,创造了 Git 工具.今天 Git 被用于成千上万个工程,并且在程序员社区中掀起了一个新的社会化编码的浪潮. 为了庆祝这一里程碑,我们请 Linus 去分享 Git 的幕后故事,并且告诉我们这个工程队软件开发的影响.你会发现他在这个故事背后的的评论.

Linus Torvalds 如何修正影响《猎魔人2》的内核 bug

Bug: CD Projekt去年为其角色扮演游戏<猎魔人2:国王刺客>加入了Linux支持,但Linux版并不是原生版本,而是使用一个特殊的包装器让Windows版本能在Linux机器上运行,方法类似Wine.游戏在Linux系统上的性能表现不佳,而以为买到了Linux原生版本的Linux玩家则感到了欺骗.但不是所有的问题都是游戏本身导致的.玩家在Steam论坛和GitHub<猎魔人2>非官方问题跟踪器上报告的游戏崩溃bug被发现是一个内核退化bug导致的,Linux作者Linu

阅读Linus Torvalds的自传《只是为了好玩》中......

最近在阅读Linux之父Linus Torvalds的自传书,感觉挺好的.幽默地总结了一些自己和Linus大神的相似之处: 1.父亲都是共产主义者.当然,我父亲年轻时候并没有强烈加入共产党的意愿,更多地是出于工作上的原因,才加入的. 2.我和Linus大神都对communism保持一定的反思精神.这倒不是为了反对而反对,这么说吧,人创造的东西,或许出发点都是善意的,但是当理论遇到实际问题的时候,实际的走向,却不一定完全能按照原先预定的轨迹去运行,可能绝大多数事情都是如此吧.而简单的贴标签售卖甚至

Linus Torvalds没有Linux未来十年计划

在年度LinuxCon峰会上,Linux创始人Linus Torvalds回答了有关安全和Linux未来十年演化的问题.Torvalds认为,安全就是bug,内核的大多数安全问题都是因为愚蠢的bug.对于Linux十年后将会走到何处,Torvalds说他从不想象如此遥远的未来,他是一名非常乏味缺乏想象力的人,他最多能看到6个月后,比如当前发布的版本和接下来发布的版本.他认为提前计划未来十年是神志不清. 笔者认为,在IT技术日新月异的今天,订立一个10年计划确实是不切实际的,因为技术更新太快,根本

Linus Torvalds 宣布Linux Kernel 5.6-rc7 发布

在新冠病毒爆发期间,Linus Torvalds 宣布了 Linux 5.6 的第七个每周候选版本,即 Linux Kernel 5.6-rc7 的发布.作为一个小更新,rc7 并未带来较大的变化. Linus Torvalds 在发布公告中评论称,尽管 Linux 5.6-rc7 可能经历了一段奇怪的时期,但 Linux 5.6 内核的开发却看起来很正常. “我们周围的世界可能正在经历陌生的时代,但至少到目前为止,内核开发看起来很正常.与往常一样,Linux Kernet 5.6-rc7 的更

Linux -- 是一个操作系统,1991年由linus Torvalds发布的,核心是kernel版本号

1.服务器: 1U /2U/4U 服务器, 一般为dell/hp/ibm 2.red hat(分量第一,收费)/centos(改编自redhat)/ubuntu(图形界面系统)/suse(开发人员使用)3.centos下载:(i386:32位/x86-64:64位) 取决于服务器物理内存大小, 小于8G选择32位,反之则64位.安装过程相同.4.CentOS-6.5-i386-bin-DVD1.iso 4G : 包含所有安装的文件. 5.安装VMware- create a new virtua

链表:二级指针的使用

博文的记录源自阅读著名的酷壳主页:http://coolshell.cn/articles/8990.html Coolshell图文并茂说明了这个问题——我们在删除链表的时候,常常需要记录该结点在链表中是否有前趋prev.如果有,那么需要把prev->next指向该结点的next域,然后再删除该结点,这样才能保证链表不会因为删除结点而“断开”.像这样: void remove(list_node **ref_head, list_node *del) { if ((*ref_head) ==

Linus 谈软件开发管理经验

原文出处: linuxtoday   译文出处:CSDN // 伯乐在线转注:英文原文写于 2011 年 导读:没有人比Linus Torvalds更了解软件开发项目管理中的酸甜苦辣了.作为Linux的创建者,Torvalds在过去二十年指导了数以千计的开发者共同改进开源操作系统内核. 文章内容如下: Linus Torvalds说,有两件事,世界上大都数人,无论是独立开发者还是公司级别的开发团队,都有普遍的错误认知. 其一:“大都数人认为可以把事情丢给其他人,让他们帮忙.在你公开你的想法后,你