请稍等 ...
×

采纳答案成功!

向帮助你的同学说点啥吧!感谢那些助人为乐的人

用C语言实现这些算法的一些小思考

老师您好,我已经学完了一半这个课程的知识了。大体上没有任何问题。老师讲解的非常好,让我对算法领域有了初步的认知。只是有一个自己的和代码并没有联系的小思考:
Java和C是我最常用的编程语言,因为Java是完全面向对象的,C是面向过程的。
我的想法:如果这些算法与数据结构全部都用C语言来实现的话,尤其是运用到C语言特有的指针的概念,这些问题是变得复杂还是简单的呢?
如果我就是按照已经写好的Java程序直接去写C语言,会不会特别的麻烦:
我初步设想了几个麻烦:(因为我的C语言学的还不够深入,所以有些问题可能比较幼稚)

  1. 如何去比较大小,类似于Comparable
  2. 如何继承以及连接接口interface
  3. 会不会运用到指针的指针类似的概念
  4. 如何去设置Java中类似于private protected(虽然可能用不到)
  5. C语言有类似于E这样的泛型吗?
    【因为我发现老师您所给的其他语言的代码案例中,没有给到C语言的,即便是C++,大体上我个人感觉也是面向对象的】
    谢谢老师!

正在回答

1回答

liuyubobobo 2020-01-31 04:58:53

首先,必须纠正一下,C 语言绝不是最常用的编程语言。现在,除了一些底层应用(操作系统,编译器等)和嵌入式应用,近乎不会有人使用 C 语言做开发了。一个核心原因,就是 C 不支持的语言特性太多了,最典型的就是面向对象。


而即使从系统底层开发的角度看,C 语言也有被“代替”的风险,rust 的使命就是如此。


我个人 200% 的不建议使用 C 语言学习算法和数据结构,核心原因就是因为,由于 C 语言缺失太多语言特性,使得在具体实现的时候,需要关注太多和算法和数据结构的逻辑本身无关的语言细节,比如内存管理,从而淹没了对算法和数据结构本身的理解。


至于你提到的问题,大多涉及面向对象的概念,如果真的有兴趣,我推荐一本书,专门讲如何使用 C 语言实现很多面向对象的概念。这本书在网上完全公开,不过只有英文版。

https://www.cs.rit.edu/~ats/books/ooc.pdf


不过依然是,如果不是非常有兴趣,或者不是因为需要把 C 语言研究到很深的地步,我并不建议在这个问题上花过多时间。


继续加油!:)

1 回复 有任何疑惑可以回复我~
  • 谢谢老师非常详细的解释,非常感谢!
    回复 有任何疑惑可以回复我~ 2020-01-31 12:56:46
问题已解决,确定采纳
还有疑问,暂不采纳
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号