宏相关内容
#define 定义一个预处理的宏
#undef 取消宏的定义
#if 编译以处理中的条件命令,类似于C语言中的if语句
#ifdef 判断某个宏是否被定义,若已定义,执行随后的语句
#elif 若#if,#ifdef,#ifndef或前面的#elif条件不满足,则执行当前#elif之后的语句,相当于C语言中的else if
#endif #if ,#ifdef,#ifndef这些条件命令的结束标志
#define STRINGIFY(x) #x 使用#操作符将参数转换为字符串
#define CONCAT(x, y) x##y 使用##操作符来将两个符号连接在一起
常见位运算
符号 |
描述 |
运算规则 |
& |
与 |
两个位都为1时,结果才为1 |
| |
或 |
两个位都为0时,结果才为0 |
^ |
异或 |
两个位相同为0,相异为1 |
~ |
取反 |
0变1,1变0 |
<< |
左移 |
各二进位全部左移若干位,高位丢弃,低位补0 |
>> |
右移 |
各二进位全部右移若干位,对无符号数,高位补0,有符号数,各编译器处理方法不一样,有的补符号位(算术右移),有的补0(逻辑右移) |
C库函数
字符串处理函数:
strlen(const char *str):返回字符串的长度
strcpy(char *dest, const char *src):复制字符串
strcat(char *dest, const char *src):连接字符串
strchr(const char *str, int c):在字符串中查找字符
strstr(const char *haystack, const char *needle):在字符串中查找子串
strspn() : size_t strspn(const char *str1, const char *str2) 检索字符串 str1 中第一个不在字符串 str2 中出现的字符下标
strcmp(): C 库函数 **int strcmp(const char *str1, const char *str2)** 把 **str1** 所指向的字符串和 **str2** 所指向的字符串进行比较。如果返回值小于 0,则表示 str1 小于 str2;如果返回值大于 0,则表示 str1 大于 str2;如果返回值等于 0,则表示 str1 等于 str2
strncmp():C 库函数 **int strncmp(const char *str1, const char *str2, size_t n)** 把 **str1** 和 **str2** 进行比较,最多比较前 **n** 个字节。如果返回值小于 0,则表示 str1 小于 str2;如果返回值大于 0,则表示 str1 大于 str2;如果返回值等于 0,则表示 str1 等于 str2
动态内存分配函数:
malloc(size_t size):分配指定大小的内存空间
calloc(size_t num, size_t size):分配指定数量、大小的内存空间,并初始化为0
realloc(void *ptr, size_t size):更改已分配内存块的大小
memcpy():C 库函数 void *memcpy(void *str1, const void *str2, size_t n) 从存储区 str2 复制 n个字节到存储区 str1
memset():C 库函数 void *memset(void *str, int c, size_t n) 复制字符 c(一个无符号字符)到参数 str 所指向的字符串的前 n 个字符
文件操作函数:
fopen(const char *filename, const char *mode):打开文件
fclose(FILE *stream):关闭文件
fputc(int c, FILE *stream):将一个字符写入文件
fgets(char *str, int n, FILE *stream):从文件读取一行文字
数学函数:
fabs(double x):返回x的绝对值
sqrt(double x):返回x的平方根
pow(double x, double y):返回x的y次幂
sin(double x):返回x的正弦值
cos(double x):返回x的余弦值
日期和时间函数:
time_t time(time_t *t):获取当前时间
struct tm *localtime(const time_t *timep):将时间转换为当地时间
char *asctime(const struct tm *timeptr):返回日期和时间的字符串表示