C 语言常用语法速查表
把 C 语言日常开发最常用的语法整理成速查,写系统代码时对照查。
数据类型与变量
int x = 10;整型变量
float pi = 3.14f;单精度浮点
double e = 2.718;双精度浮点
char c = 'A';字符变量
char str[] = "Hello";字符串(字符数组)
const int MAX = 100;常量
enum {RED, GREEN, BLUE};枚举类型
typedef int Integer;类型别名
控制流
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;跳转(慎用)
指针与数组
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;通用指针
函数
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; }内联函数
内存管理
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);安全内存拷贝(可重叠)
结构体与联合体
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;结构体别名
文件操作
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);文件定位
预处理器
#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) 仍是整个数组大小。