最近因为项目的原因,一直在linux平台上编写c程序。其实本人接触linux和c的时间并不长,真正算起来的话应该是从今年的2月份开始慢慢自学的。到现在也就2个月而已。在这两个月中,从自己一无所知到熟悉,到拿来写东西,整个过程的相当的艰辛。现在回过头来看看,自己都不清楚当初怎么挺过来的!所以,准备开一个小小的专题,把自己学的一点一滴都记录下来,在权当记录的同时给和我有一样兴趣的人一点点小小的建议。
本篇文章不写任何关于c的编程方法或者代码,但是是这个2个月来我的一些经验总结。有的时候,这种经验比单纯的编程方法或者寥寥几行代码更有效果。如果你有兴趣学写c,那么你的第一件事情不是什么算法或者数据结构,也不是什么语法或者技巧,而是必须在你的脑子里有一个“从上到下”或者“从左到右”的内存链表。这个链表表示栈内存。如果你的思维可以,那么最好再加上一个“从上到下”或者“从左到右”或者“一陀小山样子”的内存链表,这个链表表示堆内存。然后你的写程序的同时,你脑子的那两根(或者至少必须有栈一根链表)同时也在来回的写数据,读数据,这样你的c语言基本上就八九不离十了。
一谈到c语言,有点计算机教育背景的人(几乎是所有人)的第一个反应就是:fuck c,fuck pointer,fuck array and pointer。一连3个fuck,完全从个人的角度否认并放弃了c,现实生活中c程序就真的有那么的难写吗?真的就那么难理解吗?开始,我也很忌讳指针,但是慢慢的,你就会发现原来指针那就tmd那么一点事情,也就这么回事。但是指针带来的效率和操作简便性使你对其流连忘返。我现在可以说是被c的指针吸引了,指针设计的精妙相对于指针的使用方法和技巧,这点学习成本实在是太值得了。我原来是使用c#的,自从开始写c,就觉得c是多么的精炼啊,在c#中要表示一个东西,代码无比的拖沓,在c中就一个函数搞定了,那种自由的感觉真的很好。
谈到c时第二个反应就是:内存泄漏问题。动态分配内存是很简单的,但是分配了你用完了得还回去啊,结果这步老是忘掉,导致了内存泄漏。内存泄漏的解决办法其实也非常简单,而且比较有效,这点我会在接下来的内容中有所体现。
程序还是会在一定的环境中运行的,而且这个专题基本上都是在linux平台上能编译通过,不保证跨平台。第一是因为本人水平不够,第二:个人觉得写程序还是一个平台一个版本的好,需要跨平台了就把程序拿出去改改吗,这样即快又省事,还有效率,bug也会相对减少,何乐而不为呢?!所以在后续的文章中,有时会多多少少的夹杂着一些linux平台的特点介绍,毕竟我写的程序就是为了让他能在linux平台上走,别的平台我暂时还不管,也没能力管啊!因为个人的c经历有限,而且学习时间也不长,如有错误,不是故意,请提出。个人一定会尽快纠正。
最后,因为个人的工作原因和懒虫的作怪心理,这系列文章的更新时间不稳定,有的时候可能一个月不更新,有的时候一天更新几篇也是有可能的。各位看官你可以看,但是别催我。