2022/10/26 晚 学习总结
主要内容范围: 教材23章
今晚浅学了一点点东西,记录一下.
fma函数
在 math.h
里,浮点数乘加,比自己手动算精度高.
double fma(double x, double y, double z);
返回值: x*y+z
memcpy函数
在 string.h
里, 内存复制,他和strcpy的区别是,他不仅仅能复制字符串,别的类型也可以.
void *memcpy(void * restrict s1,void * restrict s2,size_t n);
把s2
复制到``s1,大小
n`个字节.
memmove函数
同上, 更安全. (即使对象重叠也能用)
void *memmove(void * restrict s1,void * restrict s2,size_t n);
把s2
复制到``s1,大小
n`个字节.
memset函数
初始化内存块
void *memset(void *s, int c, size_t n);
把c
存到s
指向的对象的前n
个字符中.
memxxx
类似的,还有memchr
,memcmp
这俩,和str
的版本区别就在于mem的版本是对内存操作,不局限于字符串.
strtok函数
我感觉这个函数真的抽象
一个字符串查询函数,应该算是字符串查询函数里最复杂的一个了.
strtok - 搜索字符串中的记号
char *strtok(char * restrict s1, const char * restrict s2);
我这里还是贴一段书上的描述吧:
在
s1
指向的字符串中寻找满足下列条件的记号:
- 组成此记号的字符不在
s2
所指的字符串中.如果存在这样的记号,就把该记号后面的字符变成空字符.
如果
s1
是空指针, 则继续最近一次strtok
调用 ---- 搜索刚好从前一个记号尾部的空字符开始.返回记号的第一个字符的指针. 如果找不到记号则返回空指针.
比如s1
是Hello World
,s2
是空格
,o
就是记号
,o
后面的字符就会变成'\0'
,返回值是H
的地址.这样一来,实际上返回的就是Hello
这个字符串了. 第二次s1
是NULL
,s2
还是空格. 从上次的记号后面的'\0'
开始.这次记号是d
,d
后面的字符变成了\0
,返回了W
的地址. 这样一来,实际上返回的就是World
这个字符串.
isxdigit函数
测试是否是16进制数字.
int isxdigit(int c);
round函数(C99)
舍入到最近的整数值(四舍五入)
double round(double x);
标签:10,26,记号,s2,void,restrict,2022,字符串,s1
From: https://www.cnblogs.com/orzmiku/p/17644131.html