admin管理员组

文章数量:1647843

对于大部分程序员,C语言是学习编程的第一门语言,很少有不了解C的程序员。

文章篇幅较长,大家一定要耐心看完。读完本文,能彻底搞清楚以下几个问题:

  1. C语言究竟是一门怎样的语言?

  2. C语言到底能做什么?

  3. C语言能找什么工作?能拿多少钱?

  4. 程序员必须要学习C语言吗?

  5. 学编程难吗?多久能入门?

  6. C语言和C++到底是什么关系?

想深入、系统了解 C 语言的小伙伴,给大家推荐一套非常 Nice 的教程,语言通俗易懂,没有那种“学院派”的味道,知识点全面、详细,非常适合 0 基础、想快速入门编程的人。

C语言入门教程(非常详细)C语言是一门面向过程的编译型语言,运行速度极快,仅次于汇编语言。C语言是计算机产业的核心语言,操作系统、硬件驱动、关键组件、数据库等都离不开C语言;不学习C语言,就不能了解计算机底层。https://xiexuewu.github.io/c/

1、C语言究竟是一门怎样的语言?

和 Java、Python、Go 等高级编程语言相比,C 语言是一门低级的语言,它没有面向对象的概念。

学习 C 语言,除了让为我们入门编程,带大家走进编程的大门,还能搞清楚程序运行的底层逻辑,比如:

  • 计算机的各个部件是如何交互的;

  • 程序在内存中是一种怎样的状态;

  • 一个程序究竟是如何执行的;

  • 操作系统和应用程序之间有着怎样的爱恨情仇。

这些底层知识决定了你的发展高度,也决定了你的职业生涯。如果你希望成为出类拔萃的人才,而不仅仅是码农,这么这些知识就是不可逾越的。也只有学习C语言,才能更好地了解它们。有了足够的基础,以后学习其他语言,会触类旁通,很快上手,7 天了解一门新语言不是神话。

C语言概念少,词汇少,只包含了基本的编程元素,所以它相对比较简单。对初学者来说,学习C语言的成本小,时间短。

2、C语言到底能做什么?

根据世界编程语言排行榜(TIOBE)的统计,能叫得上名字来的编程语言大概有 300 多种,其中常用的有 50 种,也就是榜单里面的前 50 名。

从应用范围上来说,这些编程语言大致可以分为两种:

  1. 一种是专用型语言,也就是针对某个特定领域而设计出来的语言,比如 PHP 是专门用来开发网站后台的,SQL 是专门操作数据库的语言;

  2. 另一种是通用型语言,它们可以开发多种类型的应用程序,而不是局限在某个特定的领域。比如 Python、Java、Go 等。

C语言也是一门通用性的语言,并没有针对某个领域进行优化,就目前而言,它可以进行以下几种类型的开发:

  • 1) 单片机/嵌入式开发:这是目前使用C语言最广泛的一个领域,尤其是单片机开发,基本被C语言霸占了。

  • 2) 桌面软件开发:也叫 GUI 开发或者 PC 软件开发。在实际应用中,C语言通常用来开发某些关键模块或者效率模块,而不是开发一个完整的软件。这些模块一般对性能有着很高的要求,同时也关注资源消耗情况,除了C语言也没有其它更好的选择了。

  • 3) 系统组件开发:基础组件、核心算法、硬件驱动、通信协议的实现,都离不开C语言。

  • 4) 开发操作系统:这是C语言的初衷,它就是为开发操作系统而生的,UNIX、Linux、Windows 的内核就大量使用C语言。

  • 5) 开发其它编程语言:有些编程语言的编译器(解释器)和标准库就使用C语言开发,比如 Python、PHP、Rust、Perl。

  • 6) 信号处理:C语言在电气工程领域也有很多用途,它可以使用信号处理算法来管理微处理器、微控制器等集成电路。

  • 7) 音视频处理:C语言的速度非常快,能够快速地对音频和视频数据进行处理。C语言提供了丰富的底层库和工具,如 FFmpeg、OpenCV 等,这些库和工具可以方便地对音频和视频数据进行编码、解码、剪辑、处理和转换等操作。

  • 8) 数据库开发:使用C语言开发的数据库有:MySQL、SQLite、PostgreSQL、Oracle Database、Microsoft SQL Server。

总结一下,C语言的开发场景看起来很多,但是如果总结一下的话,无非就是:底层/系统开发 +关键组件/模块的开发 + 贴近硬件的开发,这些开发场景非常关注运行效率,或者响应时间,或者硬件资源。

这里,我只是给大家大概介绍了几个开发方向,如果想更详细地了解每个方向,可以去看我之前发布过的一篇文章(C语言到底能干啥,学C语言有什么用?(小白必读)_c语言能干什么-CSDN博客),所有的灵感就来源于它。

3、C语言能找什么工作?能拿多少钱?

虽然C语言有很多开发方向,但很多初学者学完C语言以后仍然非常迷茫,只能编写没有界面的控制台程序。

这是因为,C语言仅仅是一个工具,它的标准库也很简单,只提供了最基本的功能,如果希望开发出实用的程序,往往还需要学习其他方面的知识。例如:

  • 开发硬件驱动要学习数字电路,了解 Windows 或 Linux 内核,阅读硬件厂商的接口说明书;

  • 从事嵌入式开发要学习数字电路、模拟电路、ARM、Linux、Qt等;

  • 开发PC软件要学习Windows编程,了解 GTK。

直白地说,只会C语言基本上是找不到工作的,大家必须选定一个方向继续学习其他知识。C语言不过是冰山一角,程序员要学习的东西还很多。

另外,学习C语言并不一定要从事与C语言有关的开发工作。C语言是一门简单、底层、较早的编程语言,后来的很多语言在语法上都和C语言类似,称为“类C语言”,例如 Java、C++、C#、PHP、JavaScript 等,学完C语言再学这些语言都很容易上手。

并且,C语言能够让你更加深刻的认识内存和编译原理,了解程序的每一个细节,夯实基本功,站得“低”才能望的远,所以优秀的程序员都会学习C语言。

关于C语言能挣多少钱,这几年单片机/嵌入式比较好找工作,有很多程序员都挤进这个赛道。其实也并不一定是单片机/嵌入式扩招了,而是它们一直都比较稳定,都不难找工作,在互联网遭遇滑铁卢的当下,它们显得鹤立鸡群而已。

至于具体工资,则受到多个方面的影响,比如学历、公司、岗位、地域、机遇等,年包(年薪)从 10W 以下到 40W 以上都有。

不得不说,还是互联网大厂给的工资高,2023 年秋招爆出的 offer,C/C++ 开发能给到 40W~50W 年包,和 Java、Golang 差不多,比 JavaScript 高点,比算法低点。还有华为,这几年围绕鸿蒙开发给出的工资也不错,和互联网大厂差不多。

至于贴近硬件的嵌入式,就算比较顶流的工资,也比互联网公司低 20%~30%,大概在 30W 左右。当然,不排除个别公司给得多,比如 TP-LINK、理想汽车、大疆等,也能给到 40W 年包。

以上工资,不但需要把相关的技术栈学得扎实,还需要一个不错的学历,最起码得是 985/211 本科,或者是双非硕士(注意这是起步学历);二本三本专科的小伙伴,还是放弃挣扎吧。但是不管如何,把技术栈学得扎实了,即使是专科生,也有机会拿到 20W 年包。技术栈不扎实,学历又不好的小伙伴,那就不好说了,四五千都有可能。

想快速入门 C 语言的小伙伴,这里我给大家推荐一套之前看过的教程,语言非常通俗移动,没有那种“学院派”的味道,知识点全面、详细,非常适合 0 基础、想快速入门编程的人。

4、程序员必须要学习C语言吗?

作为一门古老的编程语言,C语言已经坚挺了好几十年了,初学者从C语言入门,大学将C语言视为基础课程。不管别人如何抨击,如何唱衰,C语言就是屹立不倒;Java、C#、Python、PHP、Perl 等都有替代方案,它们都可以倒下,唯独C语言不行。

程序是在内存中运行的,一名合格的程序员必须了解内存,学习C语言是了解内存布局的最简单、最直接、最有效的途径,C语言简直是为内存而生的,它比任何一门编程语言都贴近内存。

不了解内存,就学不会进程和线程,就没有资格玩中大型项目,没有资格开发底层组件,没有资格架构一个系统,命中注定你就是一个菜鸟,成不了什么气候。

毫不夸张的说,C语言就是为内存而生的,C语言的设计和内存的布局是严密贴合的,只有学习C语言,你才能吃透内存,才能了解计算机内存是如何分布和组织的。

另外,攻克内存后,我们也能够理解进程和线程,因此进程和线程也是围绕内存打转的,从一定程度上讲,它们的存在也是为了更加高效地利用内存。

从C语言到内存,从内存到进程和线程,环环相扣:不学C语言就吃不透内存,不学内存就吃不透进程和线程。

「内存 + 进程 + 线程」这几个最基本的计算机概念是菜鸟和大神的分水岭,也只有学习C语言才能透彻地理解它们。Java、C#、PHP、Python、JavaScript 程序员工作几年后会遇到瓶颈,有很多人会回来学习C语言,重拾底层概念,让自己再次突破。

想快速入门 C 语言的小伙伴,这里我给大家推荐一套之前看过的教程,语言非常通俗移动,没有那种“学院派”的味道,知识点全面、详细,非常适合 0 基础、想快速入门编程的人。

5、学编程难吗?多久能入门?

编程是一门技术,我也不知道它难不难,我只知道,只要你想学,肯定能学会。每个人的逻辑思维能力不同,兴趣点不同,总有一部分人觉得容易,一部分人觉得吃力。

在技术领域,编程的入门门槛很低,互联网的资料很多,只要你有一台计算机,一根网线,具备初中学历,就可以学习,投资在 5000RMB 左右。

所以请先问问你自己,你想学编程吗,你喜欢吗,如果你觉得自己对编程很感兴趣,想了解软件或网站是怎么做的,那么就不要再问这个问题了,尽管去学就好了。

学习编程多久能入门呢?每个人投入的时间、学习效率和基础都不一样。如果你每天都拿出大把的时间来学习,那么一个月就可以入门C语言。

注意,这里所说的入门,是你能用 C 语言做出类似学生信息管理系统、贪吃蛇这样的小项目,它们的代码量在一千行左右。

有一点可以肯定的是,几个月从小白成长为大神是绝对不可能的。要想出类拔萃,没有几年功夫是不行的。学习编程不是看几本书就能搞定的,需要你不断的练习,编写代码,积累零散的知识点,代码量跟你的编程水平直接相关,没有几万行代码,没有拿得出手的作品,怎能称得上“大神”。

程序员被戏称为”码农“,意思是写代码的农民,要想成为一个合格的农民,必须要脚踏实地辛苦耕耘。

也不要压力太大,一切编程语言都是纸老虎,一层窗户纸,只要开窍了,就容易了。

6、C语言和C++到底是什么关系?

C++ 读作”C加加“,是”C Plus Plus“的简称。顾名思义,C++是在C的基础上增加新特性,玩出了新花样,所以叫”C Plus Plus“,就像 iPhone 6S 和 iPhone 6、Win10 和 Win7 的关系。

C++ 主要在C语言的基础上增加了面向对象和泛型的机制,提高了开发效率,以适用于大中型软件的编写。

图1:C语言和C++的关系

从“学院派”的角度来说,C++支持面向过程编程、面向对象编程和泛型编程,而C语言仅支持面向过程编程。就面向过程编程而言,C++和C几乎是一样的,所以学习了C语言,也就学习了C++的一半,不需要从头再来。

没有任何编程基础的读者,建议先从C语言学起,不要贪多嚼不烂。等你熟悉了C语言,能编写出上百行的代码,就对编程有些概念了,这个时候再去了解C++究竟在C语言基础上增加了什么,你就站在了一定的高度。有编程基础的读者,相信你自己能做出正确的判断。

本文标签: 十分钟语言