C 语言是什么

如果把计算机世界想成一座城市,C 就是很多底层建筑仍在使用的「标准图纸语言」。操作系统、驱动、单片机固件里,大量核心代码仍是 C。它不花哨,但非常扎实。

1. 一句话概念

2. 为什么你会在嵌入式里天天见到它

STM32、ESP32 等芯片的官方库、寄存器说明、示例工程,主流都是 C(或兼容 C 的 C++)。学会 C 之后:

3. C 语言的气质(先建立感觉)

气质含义对你写代码的影响
简洁关键字少、语法紧凑规则总量可控,适合打基础
贴近硬件指针、位运算、结构体内存布局能直接描述寄存器与协议
程序员主导内存malloc/free 或手动管理要认真设计所有权与生命周期
过程式思维自顶向下拆函数先想清楚步骤,再写代码

4. 完整例子:C 在工程里长什么样(示意)

下面不是你现在就要全部看懂的代码,而是让你感受「真实 C 工程」的零件:结构体配置外设、函数初始化、主循环处理。

C
1#include <stdint.h>
2 
3/* 用结构体描述一个「设备配置」 */
4typedef struct {
5 uint8_t pin; // 引脚号
6 uint8_t active_low; // 低电平有效?
7 uint16_t debounce; // 消抖计数
8} Button_t;
9 
10/* 函数:初始化一个按钮对象 */
11void Button_Init(Button_t *btn, uint8_t pin) {
12 if (btn == 0) return;
13 btn->pin = pin;
14 btn->active_low = 1;
15 btn->debounce = 0;
16}
17 
18int main(void) {
19 Button_t key;
20 Button_Init(&key, 13); // PA13 之类
21 /* 这里之后通常会有 while(1) 主循环读按键 */
22 return 0;
23}

5. 逐段拆解(现在看不懂很正常)

  1. #include :引入 uint8_t 等定宽整数类型
  2. typedef struct ... Button_t:把「引脚+电平+消抖」打包成一种自定义类型
  3. Button_Init(Button_t *btn, ...):用指针修改外部对象(函数不能「凭空」改你的局部变量)
  4. btn->pin = pin:通过指针访问结构体成员
  5. main:程序入口;Button_t key 在栈上分配一个按钮对象

6. 常见误解先排雷

7. 这一板块怎么学

  1. 先跑通「写代码→编译→看输出」闭环(见《第一个程序》)
  2. 掌握类型、变量、运算符、流程控制
  3. 用生活例子理解函数、数组、字符串
  4. 攻指针与结构体:嵌入式面试与实战的核心
  5. 补文件、预处理器、动态内存与避坑清单