良许Linux

文章数:922 被阅读:3074353

账号入驻

C语言到底怎么学?

最新更新时间:2024-02-06 18:16
    阅读数:


大家好,我是良许。

作为一名嵌入式工程师,C 语言是一门我们必须要掌握的开发语言。

我是在 2007 年的时候(大一)第一次学习 C 语言,但那时候学得很差,只考了 64 分。而在后面我再也没用过这门语言,因为我是学机械的。

在 2014 年我研究生毕业的时候,为了转行嵌入式,我再次学习了 C 语言,并且之后它就成了我工作的主语言。

直播间经常有小伙伴问我 C 语言到底应该怎么学,作为两次学过 C 语言的人,并且使用它工作长达 10 年,我还是有一些心得可以分享给各位小伙伴。

接下来,我将从 开发环境、学习路线、学习网站、实用书籍、推荐课程 等几方面,跟大家详细介绍我的学习心得,欢迎各位同行一起交流!

1. 开发环境

俗话说,工欲善其事必先利其器,选择一个合适的开发工具来学习 C 语言至关重要。

2007 年我第一次学习 C 语言的时候,使用的是 Turbo C 这种老古董。现在有很多非常优秀而且更高效的开发工具,就不太推荐 Turbo C 了。

我第二次学习 C 语言的时候是自学,使用的是 Visual Studio ,这款开发软件现在依然保持更新,对于学习 C 语言非常有帮助,大家可以考虑。

当然,现在还有很多其它非常优秀的工具,比如 Dev C++ 或 VSCode 等。偷偷告诉大家,我最近也迷上了 VSCode 了哦~

当然,如果你的学习能力比较强的话,可以直接在 Linux 系统里,使用 Vim 写代码,然后再用 gcc 编译。这种开发方式要求非常高,不仅没有图形界面,而且也不方便调试,不太建议初学者采用。

2. 学习路线

很多同学说 C 语言很难,实际上,C 语言是被大学里的老师给教难的。高校里的老师大多都是念 PPT 的,甚至连上机的时候都是拿现成的代码直接讲,敢于课堂上一行一行撸代码的少之又少。

C 语言其实并不难学,大家只需要按以下的学习路线学习就行了。

当然,对于初学者来讲,指针、数组、结构体等等这些比较抽象的概念,确实一时半会儿不太好理解。但是,只要勤加练习,多写代码,多做项目,慢慢的大家都会从菜鸟变成老鸟的。

2.1 基础语法

入门第一步,掌握C语言基础语法,它包括数据类型、变量常量、输入输出、运算符、控制结构等内容。为更深入的学习打下基础。

  • 数据类型 :除了基本的 int、float、char 等,还有 long、short、unsigned、signed 等。
  • 变量常量 :变量声明与初始化,常量定义等。
  • 输入输出 :使用 printf scanf 进行基础输入输出。
  • 运算符 :如算术运算符(+、-、*、/)、关系运算符(==、!=、>、<、>=、<=)等。
  • 控制结构 :如if语句、while循环、for循环等。

2.2 函数和程序结构

理解 C 语言函数的概念,掌握如何定义和调用函数,理解函数的作用域和生命周期。同时,理解 C 语言程序的基本结构,包括 main 函数和其他函数的关系。

  • 函数声明 :理解函数的作用域,局部变量和全局变量的区别。
  • 参数传递 :理解值传递和引用传递。
  • 返回值 :如何从一个函数返回一个值。
  • 递归函数 :如何使用函数调用自身。

2.3 数组和指针

数组是 C 语言中用于存储同一种类型数据元素的数据结构。指针是 C 语言的另一个重要特性,用于存储变量的地址。掌握数组和指针的基本概念和操作是深入学习 C 语言的关键。

  • 数组的声明和初始化 :如 int arr[5] = {1, 2, 3, 4, 5};
  • 指针概念 :指针是一个变量,存储的是另一个变量的地址。
  • 动态内存分配 :使用 malloc calloc free 进行内存管理。
  • 指针运算 :如何对指针进行加法和减法运算。

2.4 结构体

结构体是一种用户自定义的数据类型,可以包含多个不同类型的数据成员。通过结构体,可以方便地将相关的数据组合在一起,形成一个整体。

  • 结构体的定义 :使用 struct 关键字定义结构体类型,并指定结构体中的成员及其数据类型。

  • 声明结构体变量 :在定义结构体类型后,可以声明该类型的变量,并为其中的成员赋值。

  • 访问结构体成员 :通过点号 . 操作符,可以访问结构体中的成员。例如: student1.name 表示访问 student1 变量中的 name 成员。

  • 嵌套结构体 :可以在一个结构体中定义另一个结构体,实现更复杂的数据组织。

  • 指向结构体的指针 :可以通过指针来操作和访问结构体。

2.5 枚举和联合体

枚举是一种用户定义的数据类型,用于创建一组命名的整数常量,可以明确地表示某些变量只能取特定的值。联合体是一种特殊的数据类型,允许在相同的内存位置存储不同的数据类型,可以节省内存并表示同一内存位置上的不同数据类型。

  • 定义枚举/联合体类型 :使用 enum union 关键字定义枚举/联合体类型,并列出所有可能。
  • 使用枚举/联合体变量 :声明一个枚举/联合体类型的变量,并为其赋值。
  • 枚举的默认值 :如果没有显式地赋值,枚举变量的值从0开始,且每次递增1。
  • 访问联合体元素 :在同一个时间点,只能访问联合体变量中的一个元素。

2.6 数据结构和算法

数据结构和算法是编程的核心,C 语言提供了多种数据结构,如链表、队列、栈等。掌握这些数据结构以及相关的算法是提高编程能力的关键。

  • 基础数据结构 :如链表、队列、栈等。
  • 排序算法 :如冒泡排序、选择排序、插入排序等。
  • 查找算法 :如线性查找和二分查找。
  • 递归在算法中的应用 :如斐波那契数列、阶乘等。

2.7 文件操作

文件操作是 C 语言中用于处理文件的手段,包括文件的打开、读取、写入和关闭等。掌握文件操作可以更好地处理和分析数据。

  • 文件的打开和关闭 :使用 fopen fclose 函数。
  • 文件的读写 :使用 fread fwrite fscanf fprintf 函数。
  • 文件的位置指针 :使用 fseek ftell 函数管理文件位置。

2.8 系统编程

系统编程是使用C语言进行底层系统开发的技能,包括对操作系统、网络通信等的深入理解。掌握系统编程可以更好地理解和应用计算机系统的底层机制。

  • 操作系统基础 :理解进程、线程、信号等概念。
  • 网络编程 :使用套接字(sockets)进行网络通信。
  • 底层I/O操作 :理解如何与硬件进行交互。

2.9 实践项目

如果只学理论,不做实际项目的话,那一定学不好 C 语言。

选择一个项目,从简单到复杂,逐步实现。例如,一个简单的文本编辑器,一个基于文件存储的数据库,或者一个简单的网络聊天程序等。这些项目可以帮助你巩固知识,并学习如何在实际开发中应用C语言。

3. 学习网站

以下网站提供了丰富的C语言学习资源,从入门教程到进阶课程,从实例演示到技术交流,应有尽有。可以根据自己的需求和兴趣选择合适的网站进行学习。

  1. 良许嵌入式(https://www.lxlinux.net/e/):分享丰富干货、实战项目、面试必考题,帮助快速提升技能和知识水平。
  2. C语言中文网(https://c.biancheng.net/):C语言程序设计门户网站(入门教程、编程软件)。
  3. 菜鸟教程(https://www.runoob.com/):提供了一些C语言的教程和C的标准库,适合使用C语言编程的程序员。同时,网站中也有大量的在线实例,通过实例,可以更好地学习编程。
  4. CSDN(https://www.csdn.net/):致力于为中国的软件开发者提供专业、开放、互动的学习交流平台。

4. 实用书籍

为了帮助你全面掌握C语言,我精心挑选了几本经典教材。通过阅读这些书籍,你将深入了解C语言的语法、算法和实际应用。

  • 《C程序设计语言》,这是C语言圣经级别的经典之作,详细介绍了标准C语言的语法及其程序设计方法,是初学者的首选之作。
  • 《C Primer Plus》,这本书是C语言入门教材的典范之作,内容全面,深入浅出,是学习C语言的必读之作。
  • 《C陷阱与缺陷》,这本书是C程序员进阶之作,对C语言常见的陷阱和缺陷进行了深入的剖析,可以帮助读者避免在实际编程中遇到类似的问题。

5. 推荐课程

接下来就重磅推荐良许团队出品的 C 语言快速入门课程啦~

不仅有课程,而且还配套 答疑服务

  1. 以案例方式高效学习 C 语言,拒绝纯理论,更注重实践!
  2. 线下班同款,更快入门 C 语言!
  3. 课程经4000学员验证,口碑炸裂,随时涨价!
  4. 赠送课程配套资料,专属答疑群等增值服务。

课程原价 499 元,目前处于推广期, 限时 59 元 ,随时将涨回原价,欢迎大家抢购!

已经购课的小伙伴,请添加微信 sgkbc10 进群。

另外,良许团队近期还推出了另外两门优质小课。

  • Qt零基础快速入门
  1. 以项目方式高效学习Qt,拒绝纯理论,注重实践!
  2. 项目包括:记事本、串口调试助手,网络调试助手、汽车仪表盘、天气预报、智能家居等;
  3. 线下班同款,随时涨价,口碑炸裂!
  4. 赠送课程配套资料,专属答疑群等增值服务。

课程原价 399 元,目前处于推广期, 限时 99 元 ,随时将涨回原价!

  • 51单片机快速入门
  1. 以项目方式高效学习51单片机,拒绝纯理论,注重实践!
  2. 项目包括:电动车报警器、感应开关盖垃圾桶、蓝牙控制灯、WiFi插座、4G模块控制灯、温湿度检测系统、智能小车、声控小车;
  3. 包邮赠送自研51开发板一块;
  4. 赠送课程配套资料,专属答疑群等增值服务

课程原价 599 元,目前处于推广期, 限时 69 元 ,随时将涨回原价!

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: TI培训

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2021 EEWORLD.com.cn, Inc. All rights reserved