想要转C语言的朋友可能会纠结于这个问题:我没有任何C语言的基础知识,该如何学习呢?
接下来我们来谈谈如何从零开始掌握C语言。
l 了解C语言工程师的主要工作内容
C语言开发工程师现在多用于底层开发,比如编写界面程序、操作系统、嵌入式系统等,其主要工作内容更倾向于配合软件开发工程师完成工作,具体工作内容如下:
1、负责分布式数据库内核系统的维护与开发;
2、负责常用数据库的数据提取、导入工具的维护与开发;
3、完成软件系统代码的实现,撰写代码注释及开发文档;
4、协助进行系统功能定义、程序设计;
5、根据设计文档或要求完成代码编写、调试、测试与维护;
6.分析、解决软件开发过程中的问题;
7、协助测试工程师制定测试计划,定位发现的问题。
l C语言学习路径
1.环境安装
虚拟机安装与配置
Ubuntu系统安装与配置
vim编辑器的安装与配置
文件共享配置
2.系统操作命令
文件操作命令:ls、touch、mkdir、pwd、rm、chmod、mv、cp、vim、cd、pwd
网络操作命令:ping、ifconfig、netstat
3.服务器搭建
FTP 服务器设置
服务器操作命令:ftp、open、get、put、cd、byte
4. 项目
Samba网络文件共享服务器搭建
5.C 基础
内置数据类型、基本输入输出、类型表示范围、头文件包含、gcc编译运行
算术运算符、逻辑运算符、位运算符、比较运算符、赋值运算符、sizeof 运算符、地址运算符、逗号运算符
6.条件结构
真假定义、if 条件结构、if-else if 条件结构、switch 条件结构
7.循环结构
for 循环、while 循环、do-while 循环
8. 功能
函数声明、函数调用、递归函数、回调函数、场景保护、场景恢复
9. 指针和数组
指针、数组、字符串、冒泡排序、选择排序、指针数组、数组指针、
指针函数,函数指针
10.动态空间管理
空间分配、内存泄漏、动态空间申请、空间释放
11.文件操作
文件类型、创建文件、读写文本文件、读写二进制文件
12.数据结构
链表、树、图、排序算法
13. 项目
链接列表、文件、gdb、makefile
C语言要学多少才能找到工作?
▪ 首先要熟练掌握基本的C语言编程,学会使用linxu系统,常用用法,设计基本的API。如果在开发项目中连C语言的基础都不掌握,那么就无法继续开发项目,也无法看懂别人的基本编程代码。
▪ 第二,指针。学过C语言的程序员都知道,指针是C语言中最常用、最基础的,很多程序的bug都和指针的熟练程度有直接关系,所以老手通常喜欢对新手说,不懂这个就去看看C语言基础。
▪ 第三,记得写文档,看懂别人写的文档。很多开源项目是可以直接二次开发的。记得写文档,供自己开发使用。当然,看别人的文档之前,一定要看懂,不然无从下手。
▪ 第四,检查和调试Bug。C语言每次运行程序都要经过一个编译过程,在编程过程中没有办法直接修改Bug,所以必须懂得调试Bug。
▪ 第五,简单的算法。新手开发项目很少会涉及到大量的算法,一般都是一些简单的算法。
▪ 第六,项目实践。项目实践是检验你是否真正掌握了C语言的基本开发技能。至少可以独立完成一些简单的项目,比如简单的电脑,贪吃蛇游戏等。
l C语言可选择就业方向
▪ 1.嵌入式开发
上面的工作选择都是软件导向的,但是C/C++还有一个非常大的就业方向,就是从事嵌入式系统工作。嵌入式系统可能更偏向硬件,但是现如今不管做什么,软件和硬件是分不开的。
嵌入式开发还涉及到网络编程、并发编程等方面。简单来说,嵌入式代码是运行在其他小系统上而不是传统计算机上的。除了编程能力,这个方向还需要基本的电路理论素养。
一般招嵌入式开发岗位的公司,多是互联网+的公司,以硬件产品为主,比如小米、华为等。进公司的人很多都是做物联网相关的工作,毕竟这个是热点。当然也有其他业务方向,比如芯片、机器人等。
▪ 2. 人工智能
C语言在人工智能、机器学习等领域也是不可或缺的。
▪ 3. 后端开发
主流的后端开发语言只有几种,以C/C++和Java为首,其次是Python等。
▪ 4. 游戏开发
掌握了基本的C语法之后,开发游戏还是不错的选择,目前工业级的3D游戏引擎还是用C或者C++编写的。
虽然单凭个人能力不可能完成一款大型网游,但从简单的开始,编写一些小游戏,然后逐渐深入,一步步走下去,最后加入大型游戏开发团队,还是很不错的选择。对应的工作岗位主要有游戏开发工程师、游戏引擎架构工程师等。
▪ 5. 客户开发
C/C++毕竟是一门成熟的语言,除了后端开发之外还有很多其他的开发岗位可以选择,第一个就是客户端开发。
相信大部分学过C语言的同学都用过C语言写过桌面软件。所以如果不想做后端,可以找一份用C语言开发客户端的工作。做客户端同样需要扎实的编程基础和计算机理论基础,可能还需要熟悉Windows/C++的编译链接机制、QT客户端开发技术体系、Windows消息机制等技术。
因此,如果你学的是C,并且不在乎行业内莫名其妙的就业歧视链,找一份客户端开发的工作也是不错的选择。不过,相比后端开发,你可能需要重新审视客户端的角色。
▪ 6. 多媒体开发
目前多媒体技术也渗透到了人们的日常生活中,音视频已经成为人们获取信息非常重要的手段。音视频在传输过程中都是按照一定的规则进行压缩打包。视频编码技术从最初的H.261到现在的H.265已经经历了30多年的发展,实现代码全部用C或者C++实现。
▪ 7. 实验室发展
我不敢说C是世界上最好的语言,但是C基本上是工科生的通用语言,别说计算机专业了,很多工科专业,比如电信、电子、通信等,平时学习基本都是用C。
C既有比较好的运行速度,又有很好的大型项目开发能力,所以根本就能主宰大学实验室。
l C语言学习方法及建议
▪ 1. C语言有复杂的基本语法:变量、字符串、条件、循环、数组、函数、结构等,还有指针和内存管理,这是C语言中两个非常关键的标准。所以系统地学习C语言很重要。所以,要学习C语言,我建议大家从我之前的内容中,系统地了解C语言的基本语法和简单应用。
▪ 2.自学C语言就是一个看书、打字、写的过程,实操练习+问答复习可以增加编程信心,防止精神崩溃,只有会实践才能快速提高编程水平。
▪ 3.一本好的书和一个好的学习网站可以帮助你建立基本的知识体系,而一个好的学习导师和团队则是你快速成长的机会。
我可以自学吗?
如果你选择自学,这里有一些建议:
1、了解当前的市场状况和公司需要什么样的人才非常重要。
2、要有系统的学习计划。学习不是盲目的学习,要有节奏感,每天看一定数量的视频是不够的,在很多人的实践中,看视频是没有用的,规划好每天花多少时间学习、做哪些案例很重要。
3.合理的学习路线,有不懂的可以随时问我。
4. 找人指导。很多问题我们自己是不可能解决的,除非我们是天才。一个小问题我们可能花一整天都搞不清楚,但别人说一句话我们可能就明白了。这就是经验。所以最好有人指导你。
附件是学习路线图,供大家参考。