C 语言语法速查表 - C 语言常用语法与指针编程大全

这套速查给用 C 写嵌入式、操作系统或高性能代码的开发者,这里不像托管语言,内存和指针生命周期都得自己盯。内容覆盖数据类型与常量、控制流、最容易埋坑的指针与数组关系、函数、手动 malloc/free、文件 I/O 和预处理器。条目按你在写哪一类构造块来分,并标记出容易写错的地方。读完应能分清何时用指针、何时用数组,把 malloc/free 管好不漏不悬垂,并用 #ifdef 把编译期逻辑写进代码。

编程语言·共 58 条命令·最后更新 2026-07-21
c系统编程指针内存管理编译语法

数据类型与变量 8

int x = 10;
声明有符号整型变量,范围通常 32 位,跨平台时注意位宽差异
float pi = 3.14f;
单精度浮点,约 7 位有效数字,末尾 f 后缀表明是 float
double e = 2.718;
双精度浮点,约 15 位有效数字,需要精度时默认用 double 而不是 float
char c = 'A';
字符变量占 1 字节,值为其 ASCII 编码(A=65),单引号括字符
char str[] = "Hello";
字符串实为以 \0 结尾的字符数组,洗它时牢记最后一个空闲字节是结束符
const int MAX = 100;
用 const 声明只读常量,赋值后再改会编译报错
enum {RED, GREEN, BLUE};
枚举批量命名一组整型常量,默认从 0 递增
typedef int Integer;
给已有类型起别名,改善可读性、便于跨平台换底层类型

控制流 8

if (x > 0) { } else if (x < 0) { } else { }
条件分支
switch (x) { case 1: break; default: break; }
多路分支
for (int i = 0; i < n; i++) { }
for 循环
while (condition) { }
while 循环
do { } while (condition);
do-while 循环
break;
跳出循环/switch
continue;
跳过本次循环
goto label;
跳转(慎用)

指针与数组 8

int *p;
指针声明
int x = 10; int *p = &x;
取地址
*p = 20;
解引用
int arr[5] = {1, 2, 3, 4, 5};
数组初始化
int *p = arr;
数组名即首地址
*(p + i)
指针算术(等价 arr[i])
int **pp;
二级指针
void *vp;
通用指针

函数 6

int add(int a, int b) { return a + b; }
函数定义
void swap(int *a, int *b);
函数声明(原型)
int (*fp)(int, int) = add;
函数指针
static int count = 0;
静态局部变量
extern int globalVar;
外部变量声明
inline int square(int x) { return x * x; }
内联函数

内存管理 7

int *p = (int *)malloc(sizeof(int) * 10);
动态分配内存
int *p = (int *)calloc(10, sizeof(int));
分配并初始化为 0
p = (int *)realloc(p, sizeof(int) * 20);
重新分配内存
free(p);
释放内存
memset(p, 0, size);
内存初始化
memcpy(dest, src, size);
内存拷贝
memmove(dest, src, size);
安全内存拷贝(可重叠)

结构体与联合体 6

struct Point { int x; int y; };
结构体定义
struct Point p = {1, 2};
结构体初始化
p.x = 10;
访问成员
struct Point *pp = &p; pp->x = 10;
指针访问成员
union Data { int i; float f; };
联合体(共享内存)
typedef struct { int x; int y; } Point;
结构体别名

文件操作 8

FILE *fp = fopen("file.txt", "r");
打开文件(r/w/a/rb/wb)
fclose(fp);
关闭文件
fscanf(fp, "%d", &x);
格式化读取
fprintf(fp, "%d\n", x);
格式化写入
fread(buf, size, count, fp);
二进制读取
fwrite(buf, size, count, fp);
二进制写入
fgets(buf, size, fp);
读取一行
fseek(fp, offset, SEEK_SET);
文件定位

预处理器 7

#include <stdio.h>
包含系统头文件
#include "myheader.h"
包含自定义头文件
#define MAX 100
宏定义
#define SQUARE(x) ((x) * (x))
宏函数
#ifdef DEBUG ... #endif
条件编译
#ifndef HEADER_H ... #define HEADER_H ... #endif
头文件保护
#pragma once
现代头文件保护

提示

  • malloc 分配后务必检查返回值是否为 NULL。
  • free 后建议将指针置为 NULL,避免野指针。
  • 数组名在大多数表达式中会退化为指针,但 sizeof(arr) 仍是整个数组大小。

官方参考来源

下方为命令对应的官方权威文档,供你核对最新用法与深入查阅。

由 巧匠 维护

公开更新于 2026年7月21日,内容持续校对官方文档。

联系我们

命令或描述有误?提交反馈、商务合作或产品建议都可发送邮件给我们。

联系我们