C语言语法基础语法介绍

C 语言简介

C 是一种:

  • 面向过程(Procedure-Oriented)
  • 编译型(Compiled)
  • 静态类型(Static Typed)
  • 接近底层(Low-level)
  • 高性能

的编程语言。

由 Dennis Ritchie 在贝尔实验室开发。

现代操作系统、数据库、嵌入式系统、大量编程语言(如 C++、Java、Go、Rust)都深受 C 影响。


1. Hello World

c 复制代码
#include <stdio.h>

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

2. 变量与赋值

基本变量

c 复制代码
int age = 18;
float price = 9.9;
char grade = 'A';

变量修改

c 复制代码
int x = 10;
x = 20;

常量

c 复制代码
const int MAX = 100;

3. 数据类型

数字类型

类⁠型 说⁠明
int 整⁠数
float 单⁠精⁠度⁠浮⁠点
double 双⁠精⁠度⁠浮⁠点
char 字⁠符
long 长⁠整⁠数

示例

c 复制代码
int a = 10;
double pi = 3.14159;
char c = 'H';

4. 算数运算

c 复制代码
int a = 10;
int b = 3;

printf("%d\n", a + b); // 加
printf("%d\n", a - b); // 减
printf("%d\n", a * b); // 乘
printf("%d\n", a / b); // 除
printf("%d\n", a % b); // 取余

5. 逻辑运算

运⁠算⁠符 含⁠义
&& 与
! 非

示例

c 复制代码
int age = 20;

if (age > 18 && age < 30) {
    printf("青年\n");
}

6. 比较运算

运⁠算⁠符 含⁠义
== 等⁠于
!= 不⁠等⁠于
> 大⁠于
< 小⁠于
>= 大⁠于⁠等⁠于
<= 小⁠于⁠等⁠于

7. if 判断

c 复制代码
int score = 85;

if (score >= 90) {
    printf("优秀\n");
} else if (score >= 60) {
    printf("及格\n");
} else {
    printf("不及格\n");
}

8. switch 分支

c 复制代码
int day = 2;

switch(day) {
    case 1:
        printf("星期一");
        break;

    case 2:
        printf("星期二");
        break;

    default:
        printf("未知");
}

9. for 循环

c 复制代码
for (int i = 0; i < 5; i++) {
    printf("%d\n", i);
}

10. while 循环

c 复制代码
int i = 0;

while (i < 5) {
    printf("%d\n", i);
    i++;
}

11. 数组(C 的"列表")

C 没有真正的 List。

通常用:

  • 数组(Array)
  • 链表(Linked List)

代替。


数组

c 复制代码
int nums[5] = {1,2,3,4,5};

printf("%d\n", nums[0]);

遍历数组

c 复制代码
for (int i = 0; i < 5; i++) {
    printf("%d\n", nums[i]);
}

12. 字符串

C 没有真正的字符串类型。

本质是:

c 复制代码
char str[] = "hello";

实际上是:

复制代码
['h','e','l','l','o','\0']

\0 表示字符串结束。


13. 结构体(Struct)

C 没有 class。

通常使用 struct。

c 复制代码
struct Person {
    char name[20];
    int age;
};

使用结构体

c 复制代码
struct Person p;

p.age = 18;

14. 函数

定义函数

c 复制代码
int add(int a, int b) {
    return a + b;
}

调用函数

c 复制代码
int result = add(3, 5);

15. 指针(C 最核心特性)

6

指针是 C 最重要、最底层的概念。


地址

c 复制代码
int a = 10;

printf("%p", &a);

&a 表示变量地址。


指针变量

c 复制代码
int *p = &a;

含义:

复制代码
p 保存 a 的内存地址

通过指针修改变量

c 复制代码
*p = 20;

等于:

c 复制代码
a = 20;

16. 指针为什么重要

因为:

  • 数组
  • 字符串
  • 函数参数
  • 动态内存
  • 文件系统
  • 操作系统

本质都依赖指针。


17. 动态内存 malloc/free

c 复制代码
#include <stdlib.h>

int *arr = malloc(5 * sizeof(int));

free(arr);

含义

复制代码
malloc:
    在堆内存申请空间

free:
    手动释放内存

18. C 的"集合"和"Map"

C 标准库没有:

  • Set
  • Map
  • Dictionary

通常需要:

  • 自己实现
  • 使用第三方库

常见替代方案

需⁠求 C中⁠的⁠实⁠现
List 数⁠组 / 链⁠表
Set 哈⁠希⁠表
Map 哈⁠希⁠表
Queue 队⁠列⁠结⁠构
Tree 二⁠叉⁠树

19. 文件操作

c 复制代码
FILE *fp = fopen("test.txt", "r");

fclose(fp);

20. 异常处理

C 没有:

复制代码
try / catch

常见方式

返回错误码

c 复制代码
int divide(int a, int b) {
    if (b == 0) {
        return -1;
    }

    return a / b;
}

使用 errno

c 复制代码
#include <errno.h>

21. typedef(类型别名)

c 复制代码
typedef unsigned long ulong;

22. enum 枚举

c 复制代码
enum Color {
    RED,
    GREEN,
    BLUE
};

23. 宏 define

c 复制代码
#define PI 3.14

宏函数

c 复制代码
#define SQUARE(x) ((x) * (x))

24. 头文件

c 复制代码
#include <stdio.h>

作用:

复制代码
导入函数声明

类似:

  • Java import
  • Python import

25. C 的编译过程

6

复制代码
.c源文件
   ↓

预处理
   ↓

编译
   ↓

汇编
   ↓

链接
   ↓

可执行文件

26. GCC 编译

Linux/macOS

bash 复制代码
gcc main.c -o app

运行:

bash 复制代码
./app

Windows(MinGW)

bash 复制代码
gcc main.c -o app.exe

27. C 最特殊的地方(重点)

① 指针

这是 C 的灵魂。

c 复制代码
int *p;

很多现代语言都把这个东西隐藏了。


② 手动内存管理

c 复制代码
malloc()
free()

程序员自己管理内存。

优点:

  • 极致性能
  • 极致控制

缺点:

  • 容易内存泄漏
  • 容易崩溃

③ 非常接近硬件

C 可以:

  • 操作内存
  • 操作寄存器
  • 操作CPU
  • 写驱动
  • 写操作系统

④ 没有真正的"高级特性"

C 没有:

  • 类
  • 泛型
  • 反射
  • GC垃圾回收
  • async/await

因此:

复制代码
简单
但底层

28. C 与其它语言的关系

5

很多语言语法都来自 C:

语⁠言 与 C 的⁠关⁠系
C++ C 的⁠扩⁠展
Java 模⁠仿 C 语⁠法
Go 简⁠化⁠版 C 风⁠格
Rust 安⁠全⁠版 C
JavaScript C 风⁠格⁠语⁠法

29. 学习 C 最重要的几个概念

建议重点掌握:

  1. 指针
  2. 内存
  3. 数组
  4. 函数
  5. struct
  6. 编译过程
  7. malloc/free

30. 一句话总结

C 语言的本质:

复制代码
"用最少的抽象,
直接控制计算机硬件。"

它既是:

  • 现代编程语言之父

也是:

  • 操作系统世界的基础语言。
相关推荐
小雉系统5 小时前
BcoreOS安全通信架构:FsSession 抗算法后门安全设计
算法·安全·架构
§ꦿCFོ༉6 小时前
嵌入式八股文—C语言入门学习(四)
c语言·开发语言·学习
投图匠6 小时前
十种不同风格的 CTP接口 框架
开发语言·python
唐墨1239 小时前
linux kernel 比较数据大小的宏定义
linux·算法
爱笑的k1110 小时前
nano-vllm 源码剖析:千行 Python 手写离线推理引擎的调度、显存与并行时序
开发语言·python·vllm
拂拉氏10 小时前
【知识讲解-题目讲解】 统计满足K约束的子字符串数量2 (滑动窗口+前缀和+二分查找+分析)
算法·前缀和·二分查找·滑动窗口
X1A0RAN11 小时前
PPT 图片批量处理教程:导出全部幻灯片 · 提取全部素材
开发语言·javascript·powerpoint
熊猫钓鱼>_>12 小时前
普通用户视角的端侧智能体验手记【鸿蒙心迹】
开发语言·人工智能·华为·智能手机·性能优化·ai编程·harmonyos
瑞雪兆丰年兮12 小时前
JavaWeb-day13-SpringBootWeb事务管理&AOP
java·开发语言·springboot·javaweb·事务·web·aop