第一章:C语言入门

大家好,我是你们这门课的老朋友。做了十几年嵌入式开发,C语言几乎是我每天都要打交道的工具。今天咱们就来聊聊C语言的“前世今生”,以及怎么把它的开发环境搭起来,跑通第一个程序。

说实话,很多初学者一上来就急着写代码,反而忽略了语言本身的历史和特点。我个人觉得,了解一门语言的“出身”,能帮你更好地理解它为什么这么设计。咱们不搞枯燥的编年史,就聊聊那些关键节点。

1.1 C语言发展史:从贝尔实验室到世界

C语言诞生于1972年的贝尔实验室。它的父亲是丹尼斯·里奇(Dennis Ritchie)。当时是为了重写Unix操作系统。你想想看,那时候的汇编语言写系统有多痛苦?

我记得刚入行时,一位老工程师跟我说:“没有C语言,就没有现代操作系统。”这话一点不夸张。C语言在1978年出版了《The C Programming Language》——也就是著名的“K&R C”。后来ANSI在1989年标准化了C语言,也就是C89/C90。之后经历了C99、C11、C17,直到现在的C23。

为什么会持续更新?因为硬件在变,需求在变。但C语言的核心——简洁、高效、贴近硬件——从来没变过。

核心要点:C语言是“高级汇编”,它让你既能写出接近硬件的代码,又不用直接面对寄存器操作。

1.2 C语言特点:为什么它经久不衰?

我在项目中遇到过不少语言选型的争论。但只要是嵌入式、操作系统、驱动开发,C语言几乎是唯一的选择。为什么?

  • 高效性:生成的代码体积小、执行快。说白了,C语言编译出来的程序,跟手写汇编的效率差不了多少。
  • 可移植性:同一份C代码,稍微改改就能跑在不同平台上。我在ARM、RISC-V、x86上都干过这事。
  • 底层控制力:指针、内存管理、位操作——这些是C语言的“杀手锏”。
  • 简洁语法:只有32个关键字。你想想看,C++有多少个?

注意:简洁不等于简单。C语言的指针和内存管理,是新手最容易踩坑的地方。我曾经因为一个野指针,排查了整整两天。

1.3 C语言应用场景:它到底能干什么?

你可能觉得C语言“老古董”了。但看看这些场景:

领域 具体应用 为什么用C?
嵌入式系统 单片机、RTOS、驱动 资源受限,需要极致效率
操作系统 Linux内核、Windows内核 直接操作硬件和内存
数据库 MySQL、SQLite 高性能、低延迟
编译器/解释器 Python解释器、GCC 自身就是C写的
游戏引擎 Unity底层、虚幻引擎 图形渲染需要极致性能

说白了,只要是对性能有极致要求的地方,C语言就是首选。

1.4 开发环境搭建:VS Code 与 Dev-C++

工欲善其事,必先利其器。我建议新手用VS Code,它轻量、插件丰富。当然,Dev-C++对初学者更友好,但功能有限。

1.4.1 使用VS Code搭建C环境

  1. 下载并安装VS Code。
  2. 安装C/C++扩展(由Microsoft提供)。
  3. 安装MinGW-w64(Windows)或使用GCC(Linux/macOS)。
  4. 配置环境变量,确保gcc命令可用。
  5. 在VS Code中按Ctrl+Shift+P,搜索“C/C++: Edit Configurations”,设置编译器路径。

小技巧:我个人习惯在VS Code里安装“Code Runner”插件,写完后一键运行,省去手动编译的麻烦。

1.4.2 使用Dev-C++

Dev-C++是集成好的IDE,自带编译器。下载安装后直接新建文件就能写代码。适合完全零基础的同学。

避坑指南:我曾经遇到过Dev-C++编译时提示“undefined reference to `WinMain'”,这是因为你创建了Windows项目而不是控制台项目。记得选“Console Application”。

1.5 第一个C程序:Hello, World!

好了,环境搭好了,咱们来写第一个程序。这是C语言界的“传统”——每个程序员的第一行代码都是这个。

#include <stdio.h>

int main() {
    printf("Hello, World!\n");
    return 0;
}

这段代码做了什么?

  • #include <stdio.h>:引入标准输入输出库。没有它,printf就用不了。
  • int main():程序入口。每个C程序都从main函数开始执行。
  • printf(...):打印字符串到控制台。
  • return 0;:告诉操作系统程序正常结束。

你可能会问:为什么是int main()而不是void main()?嗯,这里要注意:标准C规定main函数必须返回int。void main在一些编译器上能过,但严格来说是不规范的。我在面试时经常拿这个点考新人。

1.6 本章知识体系图

下面这张图帮你梳理本章的核心脉络。从历史到特点,再到应用场景,最后落到环境搭建和第一个程序。一图胜千言。

C语言入门 发展史 1972年贝尔实验室 K&R C → C89 → C99 → C11 → C23 语言特点 高效、可移植、底层控制 32个关键字、简洁语法 应用场景 嵌入式、操作系统 数据库、编译器、游戏 开发环境搭建 VS Code + MinGW Dev-C++ 集成IDE 第一个C程序 Hello, World! #include <stdio.h> 掌握基础,才能走得更远

1.7 本章小结

这一章咱们聊了C语言的起源、特点、它能干什么,以及怎么把开发环境搭起来。最后亲手写了第一个程序。说实话,看到“Hello, World!”出现在屏幕上那一刻,还是挺有成就感的。

你可能会觉得这些内容有点“虚”。但相信我,打好基础比什么都重要。我在带新人时,发现那些对语言本身理解深刻的人,后面学指针、内存管理时上手特别快。

下一章咱们会深入C语言的基本语法——变量、数据类型、运算符。这些都是写代码的“砖瓦”。准备好了吗?


公众号:蓝海资料掘金营,微信 deep3321