内存操作函数(memcpy、memmove、memcmp、memchr、memset)
存在内存操作函数的意义:对任何类型都适用,只要按照字节操作。
memcpy函数:
注:memcpy函数从src的位置向后复制count个字节到dest的内存位置;
这个函数在遇到'\0'不会停下来;
如果src和dest有任何的重叠,复制的结果都是未定义的。
有以上代码可知:memcpy可以将整个结构体拷贝给另一个结构体。当然也可以拷贝整个数组及其他。
memmove函数:
和memcpy的差别是memmove函数处理的源内存块和目标内存块是可以重叠的。
如果源空间和目标空间出现重叠,就得使用memmove函数处理。
memcmp函数:
比较从buf1和buf2指针开始的num个字节。
比较8个字节,因为'd'的ASCII码大于‘D’。
memchr函数:
在buf的count个字节查找字符c。
memset函数:
memet函数用于初始化。
但是如果设置为0呢?
可以看到可以初始化为0.
那如果设置为整数1呢?
16843009其实是1111,也就是说将每个元素的四字节全都初始化为1,因为0将四个字节初始化为0元素还是为0。
所以需要注意的是memset是按字节进行初始化的。
本篇博客里所有函数都是按字节操作的。