主题:[求助]求助
windy0will
[专家分:2300] 发布于 2010-07-13 17:17:00
我觉得现在我对C语言的语法基本了解,想进一步学习,不知道从哪方面开始。
是先学数据结构(目前只学了队列,栈,列表),还是其他。。。。希望高手给建议。
回复列表 (共10个回复)
沙发
cgl_lgs [专家分:21040] 发布于 2010-07-13 17:57:00
数据结构其实非常简单,基本就那些东西,如果不是应试,那了解了解就可以了,特别是其中的算法分析作用不太明显可以不看。
至于其他嘛,建议可以多搞一些自己以后想做的方向的程序,如果还不清楚方向,那就去SourceForge.net看看有没有感兴趣的项目:)
你的C不错,但别像我当年着的道,C越娴熟转C++越难(程序容易转,思想转变难)。但凡事都有两面性,当你过了这个C TO C++的坎后,你会发现在很多地方都会胜人一筹:)
个人建议现在您可以边做东西(啥都行)边看看E* C/C++系列的书:)
板凳
windy0will [专家分:2300] 发布于 2010-07-13 18:05:00
楼上说得不错。前一段时间我也试着看过关于C++方面的书,看到类那一部分,感到特别别扭,觉得那些类方法总是感觉怪怪的,还不如直接写函数舒服。有没有比较好的方法 过C TO C++ 这个坎?
3 楼
强强 [专家分:4740] 发布于 2010-07-13 19:25:00
你可以写一个俄罗斯方块,对你的编程能力进行下检验以及对以前的知识进行一个总的复习
5 楼
雪光风剑 [专家分:27190] 发布于 2010-07-13 21:56:00
C to C++最好的方法就是忘掉C的一切
从新审视程序的逻辑,把构建算法的最小逻辑元重新定义为对象
6 楼
cgl_lgs [专家分:21040] 发布于 2010-07-13 22:03:00
[quote]楼上说得不错。前一段时间我也试着看过关于C++方面的书,看到类那一部分,感到特别别扭,觉得那些类方法总是感觉怪怪的,还不如直接写函数舒服。有没有比较好的方法 过C TO C++ 这个坎?[/quote]
以下是个人经验,仅供参考,不过感觉咱俩有一定的共同之处,所以没准儿派得上用场:)
其实从C到C++难的不是语法也不是技巧,而是思想!
一、
C往往是以代码为中心的,也就是说:写程序时是代码的流程占核心,数据的变化只是为了从一个流程到另一个流程;
而C++则是以数据为中心的,也就是说:写程序时是以数据流为核心,代码的不同只是为了数据从一个状态变成另一个状态;
二、
C的struct及对于此struct的操作的函数的总合可以看作是类的原始状态:)
三、
C喜欢以大而全功能的函数包揽一切操作——因种种原因,确实不好拆;
C++用继承、多态等概念实现代码的分散。
四、
C++中的虚函数,其实就是C里的函数指针;
如果一个C++类里有很多虚函数,则相当于C的struct里有一个函数指针数组。
7 楼
cgl_lgs [专家分:21040] 发布于 2010-07-13 22:04:00
孩子闹了,先写这些:)
此贴不知可否申精,大家一起补充一下C to C++:)
8 楼
cgl_lgs [专家分:21040] 发布于 2010-07-13 22:56:00
五、
泛型并不等于C++,它只是C++模板的一个分支领域,故不要以为把printf改成了cout,把scanf改成了cin就是C++程序了,我们应该辩证的对待输入输出流。
六、
代码的优美在于简单,这是我一朋友经常说起的。这一点与C是一样的,不过“简单”并不意味着代码短小,而是易于维护。使用C++时,在不注重效率的地方,你大可使用虚函数、继承等手法实现多态,对于C来说,就是把一个函数时针,在不同的时候指向不同的函数,从而实现相同代码产生不同的功效:)
七、
少用多重继承,这个东西听起来很美,你可以有多个父亲,这样你就可以把他们所有“优点”都继承了。
但我们不得不承认:你也同时继承了很多“缺点”。
八、
少用虚继承,它不可避免地使用了多级指针,如果与多重继承混合,还有可能在后期维护中产生“低能”的“病秧子”。
九、
少用操作符重载,虽然它可以使得你的程序看起来很炫,但出了错也会很“陷”。
十、
少用的功能不等于不用,更不等于不需要理解!有时它可能是必须的选择!正如goto一样!
9 楼
windy0will [专家分:2300] 发布于 2010-07-16 21:53:00
先谢谢 cgl_lgs 的非常精彩的建议。
我发现很多更基本的东西还没懂,像if语句和switch语句它们在实现上的差别。我感觉没有像他们学计算机专业的人那样有精力去学C++。当初学C语言时只是出与对它的兴趣,现在也是很感兴趣!!在学C++以前我想先学学汇编。可能那时侯学起来轻松一点吧。
10 楼
雪光风剑 [专家分:27190] 发布于 2010-07-18 09:28:00
花这么多时间在基础语句的实现上,除非你从一开始就打算做底层代码,否则这些深入的基础研究将占用你极为大量的时间和精力,而带来的程序设计能力本身的提高则显得非常有限。个人还是建议如果想转向C++,那么应该暂时放下对每个语句的实现的具体探讨,而转向对程序设计这件事本身的思维过程的深入思考和研究
6楼的(一)是一种参考思路,但是更多的区别还有待你去深入思考。
我来回复