我们知道的东西是有限的,而我们不知道的东西则是无穷的。——拉普拉斯
位操作
~a,
取反a ^ b
, 异或
运算符
sizeof()
,获得对象的所占空间大小,单位为byte
。sizeof(str)
,得到str
所占含\0
的空间大小,str为字符串数组名,该功能注意与strlen()
区分,详细分析见C学习:sizeof的用法理解。
字符串操作函数
头文件:#include <string.h>
strtok()
, 字符串分割(不可重入,慎用),高频重点atoi()
, 字符串转int整数,类似的还有atoll()
,有安全问题strtol()
,字符串转long整数,多一个进制入参,类似的有strtoll
,strtoul
,推荐使用strtof()
,字符串转float浮点,类似的有strtod
strstr()
, 字符串子串匹配strcpy()
, 小字符串往大字符串全量拷贝,拷完后目标字符串末尾自动追加\0strncpy()
, 拷贝固定长度的字符串至目标字符串,可调节两个字符串偏移位置来实现灵活拷贝,拷贝完需末尾手动添加\0strlen()
, 获取字符串长度,不含\0
strcat()
,将src字符串追加到dest字符串末尾,自动识别\0strncat()
,字符串连接,往末尾追加n个字符
内存管理
重点掌握前4个常用的即可,内存大小单位均为Byte
。
malloc()
, 从堆里申请固定大小的连续内存,不初始化calloc()
, 从堆里申请固定大小的连续内存,并统一初始化为0free()
, 释放从堆里动态申请的内存空间memset()
, 将某连续内存设为某固定值memcpy()
,将源连续内存固定长度的值拷贝至目标连续内存,不关心数据类型,末尾不会自动添加\0。
输入输出
sscanf()
, 将字符串内容按固定格式取给对应变量;类似scanf()
,从键盘取固定格式内容sprintf()
, 将各变量按固定个数写入目标字符串