因为我知道我只是学了语法,想进一步扩展自己的技术,我应该怎么办?


多做些练习就好了。或者开发者常见的简单功能的微型小型程序。


正常的话,都会推荐你学《数据结构》和《演算法》。

按照个人实践和师兄弟的一些反馈,数据结构中图的应用相对较少,链表、队列、二叉树的应用非常多,比如一个游戏有包裹,包裹要用到链表,许多非同步处理机制需要用到队列,二叉树的应用在资料库、索引、压缩等广泛。演算法的应用就更不用说了,不过一般业务逻辑需要用到的演算法就很少。

对于《C指针与陷阱》和《C专家编程》,我有这两本书,但没翻过,该踩的坑都踩过了。

搞明白了数据结构,一般都会去写个小游戏或者管理系统什么的,不过我不是科班出来的,像贪吃蛇、五子棋之类的小游戏,图书管理系统或者学生管理系统,都没搞过。

更高级一些的就是去折腾开源项目,不过一般的开源项目,没有很深的积累,折腾起来要死要活的,因为前置知识太多,比如http伺服器,它的前置是socket编程+tcp/ip协议,主要是tcp和http,还有一些坑,比如同步和非同步,啥叫阻塞,初学了C就直接去折腾这些肯定被实力劝退,但要真折腾下来了,收获肯定是比折腾小游戏或者管理系统来得多,需要花的精力和时间也更多。

这一步是必须的,课程下来的,只会让你学会如何使用水泥、砖头、钢筋,但这些不足以让你学会建房子,搞个小游戏或者折腾开源项目,就是让你把这些技能和知识统筹起来。为以后的编程建立一个模板,这个模板对后续的编程影响挺大的,编程风格、注释风格、变数命名习惯等等,所以尽量选择一个标准的项目来折腾。

这一步还有另一个意义,就是锚定你在计算机领域的一个点,比如http伺服器,你搞通了这个,就等于你具备了socket编程、http协议,无论以后你往伺服器编程,还是去搞前端,都很有优势,就好比你从机关单位出来去创业,跟政府打交道的活,你就倍轻松,因为你对于机关内部的运作很熟悉。

锚的点越多,比如你伺服器这块会搞,汇编你会搞,硬体会搞,电路你也会,这时在计算机领域中出来一个新技术,比如python、比如机器学习,搞起来就很快上手了,一般大佬学个python语言、java什么的,都是花个三五分钟看下资料就入门,花个三五天看看常式就上手了。

其实,按照谭C出身的话,我比较建议先去浙大翁恺老师那过一遍,毕竟对于头文件怎么编写,预处理怎么写,如何拆分多个C文件,或者学学如何建立工程,像我这种懒得建工程的,都是用include把多个C文件包含进来的野路子,在生产环境会被打死的。很多刚学会c的,往main函数里写个几百上千行代码,这种在生产环境也是会被打死的。

看自己折腾的第一个项目,都积累了哪些知识,然后再往其他的点上搞一下:

1.文件操作,这个毫无疑问是必备的,写log或者读参数、回写等等,像游戏的存档就需要文件操作,一般搞管理系统起步的同学就具备了这个技能。

2.socket编程,除非以后只搞前端或者不联网的程序,不然都会接触到socket编程,在windows下用的是winsocket,通信流程跟linux下是一样的,但是初始的代码和库的位置不一样,并且linux下的select,winsocket好像不支持。

3.图形界面编程,要跳出黑框控制台,肯定要搞图形界面,这个又分好几种方向,看个人喜好了。

之后就是考虑自己要往哪个方向上走了,往图形,比如游戏之类的,可能就要转C++、JAVA,国内主流,几乎没有说用C来写PC游戏的厂,如果用游戏引擎,就要用C#之类的了。

如果往嵌入式上走,就要搞操作系统原理和数电模电、汇编,这些技能就不是必备前置了,嵌入式必备的前置是C,现在用汇编搞嵌入式的,都是比较低端的处理器


学完了继续深造的话,可以参考下面这个路线图!

https://www.zhihu.com/question/303496613/answer/1645756681


以下可选,仅供参考

  1. 数值计算。CBLAS库及其实现、数值分析、并行原理、统计或数据分析。
  2. 偏文本操作。数据结构及演算法、编译原理。
  3. 网路。计算机网路基础。
  4. GUI。计算机图形学。
  5. 操作系统相关。linux c或者windows c。


推荐一本书:

计科的话其实我感觉跟著课程走就行,平时多写点代码。


学基础吧,只学了C还有很多需要学习,没目标就去学硬体,微机原理


去leetcode刷题学演算法,

继续去学c++/java/c#等高级语言;

学设计模式,学ide的应用

找些练手的小项目。

以上,在B站等都能够找到很多视频教程。

一句话概括,为手熟尔。


你好,作为编码10余年老司机,我想谈下自己的看法,希望对你有帮助。

第一:是否经常上机写代码了,如果没有,尽快上机写代码,写什么代码?初步可以将教材上的例子实现,例如:递归函数调用,链表增删改、循环的使用、指针的使用等等。

第二:可以阅读一些开源C代码,例如:

  • CJson:轻量级json解析库。
  • Sqlite:一个自包含,无伺服器,零配置,支持事务的 SQL 资料库引擎,包括 C 介面。公开领域。
  • tinyhttpd: 一个不到 500 行的超轻量型 Http Server,用来学习非常不错,可以帮助我们真正理解伺服器程序的本质。
  • libcurl: 一个客户端的 URL 转换库,支持多种格式。
  • ffmpeg: 一个完整,跨平台的录音,转换和流化视频以及音频的解决方案等。

第三:可以去慕课网、B站看看视频,找一些适合自己的视频,也可以去力扣网刷刷题。

更多关于c/c++等语言学习方面的可以参考我的其他文章

零基础学编程,VB / Java / C / C# / C++ 等哪个更容易上手??

www.zhihu.com图标大学C语言好难啊!希望各位能给我一些学习的方法,感谢!??

www.zhihu.com图标

总之:提升C语言最重要的途径之一就是多上机写代码。


我记得有一本书写的是用c实现在linux下开发组件的书,那本书你可以想想能用到吗,既可以写实例也可以学习linux内核逻辑的实现


推荐阅读:
相关文章