如何阅读别人的C代码?

这段时间阅读别人的大量的数据结构的相关程序,每个人的写法和风格不尽相同,看得相当难受,特别是些条件变化的for循环,相当的不好处理,但是还是有些收获和心得,整理了下,写出来

  数据机构的试题中有两种情况,一个就是给你说了大致的程序功能和思想,让你补全你的程序,这种问题的麻烦就是不是自己完全的写作,以至于自己的代码,不是很好的适合出题者的思路。第二个就是给你一段程序让你读懂后,说出他的功能或者给你一个初值让你扮作debuger自己过一遍,有点像白盒测试,难度因人而异,我倒是喜欢这种的题目。因为只要读懂了就好办,也可以锻炼自己的代码阅读水平。

  针对第一种情况,给出了程序功能和思想,补全程序的题目。注意一下几点:

   1、最基本的就是给一个初值,先过一遍,了解下程序需要用到那些变量和值,这个和写程序是一样的。程序不是写一行才去想下一行怎么写,走到哪里需要定义变量就补上一行代码,完了到处都是局部变量,程序的结构非常差。总而言之,就是先总体看下全局的需要什么东西,再想办法。

   2、然后就是根据他的功能,自己先把这个程序实现下,不用太精确,用自己的思想勘察这个问题,然后原来的代码的思想就变得相当好理解了,当然这个程序不需要自己写出来,在脑袋里捉摸下即可,模拟下原作者的思路未尝不可。

   3、基于以上两点,有时候我在看别人代码是很自然的就结合了上面两点来做,先使用第二点把自己的细想先实现了,自己想通要怎么干,再去看别人的东西,相当好办,最后传个值验证下,基本就没问题了。

  

 那么对于第二个情况,其实也和第一种差不多,但是还是要注意的就是,看代码的时候把每个值得变化用一个表写在旁边,制定一个变量赋值表,还有就是很重要的一点!一边读一边写上注释,这个相当好用,避免自己前面的忘记了,看第二遍也是相当好的。然后就是,在看代码是,突破点再变化的量和不是常常变化的量,这点好像不是很好理解,很多的排序操作都会有用来临时存储的变量,有时候称作哨兵,这个变量往往是关键,频繁的赋值取值,作用很大,画出与之相关的赋值和取值流程,代码就好懂多了。