C参考手册
这是一份速查手册,不用从头读到尾——需要时翻一翻就行。
关键字速查
C89 关键字(32个)
| 关键字 |
说明 |
auto |
自动存储期(默认) |
break |
跳出循环或switch |
case |
switch分支标签 |
char |
字符类型 |
const |
常量修饰符 |
continue |
跳到循环下一次迭代 |
default |
switch默认分支 |
do |
do-while循环 |
double |
双精度浮点 |
else |
if-else的else分支 |
enum |
枚举类型 |
extern |
外部链接声明 |
float |
单精度浮点 |
for |
for循环 |
goto |
无条件跳转 |
if |
条件判断 |
int |
整型 |
long |
长整型修饰符 |
register |
寄存器存储建议 |
return |
函数返回 |
short |
短整型修饰符 |
signed |
有符号修饰符 |
sizeof |
获取类型或变量大小 |
static |
静态存储期或内部链接 |
struct |
结构体 |
switch |
多分支选择 |
typedef |
类型别名 |
union |
联合体 |
unsigned |
无符号修饰符 |
void |
空类型 |
volatile |
防止优化修饰符 |
while |
while循环 |
C99 新增关键字(5个)
| 关键字 |
说明 |
_Bool |
布尔类型(通常用 bool 宏) |
_Complex |
复数类型 |
_Imaginary |
虚数类型 |
inline |
内联函数建议 |
restrict |
指针别名限制 |
C11 新增关键字(7个)
| 关键字 |
说明 |
_Alignas |
对齐指定 |
_Alignof |
获取对齐要求 |
_Atomic |
原子类型 |
_Generic |
泛型选择 |
_Noreturn |
函数不返回 |
_Static_assert |
静态断言 |
_Thread_local |
线程局部存储 |
格式说明符速查
printf 格式说明符
| 说明符 |
输出类型 |
示例 |
%d / %i |
有符号十进制整数 |
printf("%d", 42) → 42 |
%u |
无符号十进制整数 |
printf("%u", 42U) → 42 |
%o |
无符号八进制 |
printf("%o", 8) → 10 |
%x |
无符号十六进制(小写) |
printf("%x", 255) → ff |
%X |
无符号十六进制(大写) |
printf("%X", 255) → FF |
%f |
十进制浮点 |
printf("%f", 3.14) → 3.140000 |
%e |
科学计数法(小写e) |
printf("%e", 0.001) → 1.000000e-03 |
%E |
科学计数法(大写E) |
printf("%E", 0.001) → 1.000000E-03 |
%g |
自动选择%f或%e |
printf("%g", 0.0001) → 0.0001 |
%c |
字符 |
printf("%c", 'A') → A |
%s |
字符串 |
printf("%s", "hi") → hi |
%p |
指针地址 |
printf("%p", ptr) → 0x7ffd... |
%ld |
long |
printf("%ld", 100000L) |
%lld |
long long |
printf("%lld", 1LL<<40) |
%zu |
size_t |
printf("%zu", sizeof(int)) |
%% |
百分号本身 |
printf("100%%") → 100% |
printf 修饰符
| 修饰符 |
含义 |
示例 |
%- |
左对齐 |
"%-10s" |
%0 |
用0填充 |
"%05d" → 00042 |
%m |
最小字段宽度 |
"%10d" |
%.n |
精度 |
"%.2f" → 3.14 |
scanf 格式说明符
| 说明符 |
读取类型 |
%d |
int |
%u |
unsigned int |
%ld |
long |
%f |
float |
%lf |
double |
%c |
字符 |
%s |
字符串(遇空白停止) |
%[...] |
扫描集 |
%*d |
读取但丢弃 |
转义字符表
| 转义序列 |
含义 |
ASCII值 |
\a |
响铃 |
7 |
\b |
退格 |
8 |
\f |
换页 |
12 |
\n |
换行 |
10 |
\r |
回车 |
13 |
\t |
水平制表 |
9 |
\v |
垂直制表 |
11 |
\\ |
反斜杠 |
92 |
\' |
单引号 |
39 |
\" |
双引号 |
34 |
\0 |
空字符 |
0 |
\ooo |
八进制值 |
— |
\xhh |
十六进制值 |
— |
运算符优先级表
从高到低排列,同一行的运算符优先级相同:
| 优先级 |
运算符 |
结合性 |
说明 |
| 1 |
() [] -> . ++(后) --(后) |
左→右 |
后缀 |
| 2 |
++(前) --(前) + - ! ~ *(解引用) &(取地址) sizeof (type) |
右→左 |
单目 |
| 3 |
* / % |
左→右 |
乘除 |
| 4 |
+ - |
左→右 |
加减 |
| 5 |
<< >> |
左→右 |
移位 |
| 6 |
< <= > >= |
左→右 |
关系 |
| 7 |
== != |
左→右 |
相等 |
| 8 |
& |
左→右 |
按位与 |
| 9 |
^ |
左→右 |
按位异或 |
| 10 |
| |
左→右 |
按位或 |
| 11 |
&& |
左→右 |
逻辑与 |
| 12 |
|| |
左→右 |
逻辑或 |
| 13 |
?: |
右→左 |
条件 |
| 14 |
= += -= *= /= %= &= ^= |= <<= >>= |
右→左 |
赋值 |
| 15 |
, |
左→右 |
逗号 |
💡 记忆口诀:单目→乘除→加减→移位→关系→相等→位与→异或→位或→逻辑与→逻辑或→条件→赋值→逗号
常用头文件函数速查
stdio.h
| 函数 |
功能 |
printf |
格式化输出到stdout |
fprintf |
格式化输出到文件 |
sprintf |
格式化输出到字符串 |
snprintf |
格式化输出到字符串(安全) |
scanf |
从stdin格式化读取 |
fscanf |
从文件格式化读取 |
sscanf |
从字符串格式化读取 |
fopen |
打开文件 |
fclose |
关闭文件 |
fgetc |
读取一个字符 |
fputc |
写入一个字符 |
fgets |
读取一行 |
fputs |
写入字符串 |
fread |
二进制读取 |
fwrite |
二进制写入 |
fseek |
设置文件位置 |
ftell |
获取文件位置 |
rewind |
重置文件位置到开头 |
feof |
检测文件末尾 |
ferror |
检测文件错误 |
fflush |
刷新缓冲区 |
remove |
删除文件 |
rename |
重命名文件 |
tmpfile |
创建临时文件 |
perror |
打印错误信息 |
stdlib.h
| 函数 |
功能 |
malloc |
动态分配内存 |
calloc |
分配并清零内存 |
realloc |
重新分配内存 |
free |
释放内存 |
atoi |
字符串转int |
atol |
字符串转long |
atof |
字符串转double |
strtol |
字符串转long(安全) |
strtod |
字符串转double(安全) |
rand |
生成随机数 |
srand |
设置随机种子 |
qsort |
快速排序 |
bsearch |
二分搜索 |
abs |
整数绝对值 |
labs |
long绝对值 |
exit |
终止程序 |
atexit |
注册退出函数 |
system |
执行系统命令 |
getenv |
获取环境变量 |
string.h
| 函数 |
功能 |
strcpy |
字符串拷贝 |
strncpy |
字符串拷贝(安全) |
strcat |
字符串拼接 |
strncat |
字符串拼接(安全) |
strcmp |
字符串比较 |
strncmp |
字符串比较(指定长度) |
strlen |
字符串长度 |
strchr |
查找字符(从左) |
strrchr |
查找字符(从右) |
strstr |
查找子串 |
strtok |
字符串分割 |
memcpy |
内存拷贝 |
memmove |
内存移动(允许重叠) |
memset |
内存填充 |
memcmp |
内存比较 |
math.h
| 函数 |
功能 |
fabs |
浮点绝对值 |
sqrt |
平方根 |
pow |
幂运算 |
ceil |
向上取整 |
floor |
向下取整 |
round |
四舍五入 |
fmod |
浮点取余 |
log |
自然对数 |
log10 |
常用对数 |
sin |
正弦 |
cos |
余弦 |
tan |
正切 |
asin |
反正弦 |
acos |
反余弦 |
atan |
反正切 |
atan2 |
反正切(两个参数) |
ctype.h
| 函数 |
功能 |
isalpha |
是否字母 |
isdigit |
是否数字 |
isalnum |
是否字母或数字 |
isupper |
是否大写 |
islower |
是否小写 |
isspace |
是否空白 |
ispunct |
是否标点 |
isprint |
是否可打印 |
toupper |
转大写 |
tolower |
转小写 |
time.h
| 函数/宏 |
功能 |
time |
获取当前时间 |
clock |
获取CPU时钟数 |
localtime |
转本地时间 |
gmtime |
转UTC时间 |
strftime |
格式化时间 |
difftime |
计算时间差 |
mktime |
tm转time_t |
CLOCKS_PER_SEC |
每秒时钟数 |
assert.h
| 函数/宏 |
功能 |
assert(expr) |
断言,失败则终止 |
NDEBUG |
定义后禁用assert |
errno.h
| 符号 |
功能 |
errno |
全局错误码变量 |
EDOM |
定义域错误 |
ERANGE |
值域错误 |
数据类型范围速查
| 类型 |
大小(字节) |
最小值 |
最大值 |
char |
1 |
-128 |
127 或 0/255 |
signed char |
1 |
-128 |
127 |
unsigned char |
1 |
0 |
255 |
short |
2 |
-32768 |
32767 |
unsigned short |
2 |
0 |
65535 |
int |
4 |
-2147483648 |
2147483647 |
unsigned int |
4 |
0 |
4294967295 |
long |
4/8 |
依平台 |
依平台 |
unsigned long |
4/8 |
0 |
依平台 |
long long |
8 |
-9223372036854775808 |
9223372036854775807 |
float |
4 |
约1.2e-38 |
约3.4e+38 |
double |
8 |
约2.2e-308 |
约1.8e+308 |
Web-Tutorial 技术团队
由多位开发者共同维护的编程教程平台。每篇教程由对应领域的开发者编写和审核,确保内容准确可靠。如发现任何问题,欢迎向我们反馈。
关于我们