内存操作

char *memcpy( void *dst, void const *src, size_t length );
char *memmove( void *dst, void const *src, size_t length );
char *memcmp( void const *a,void const *b, size_t length);
char *memchr( void const *a, int ch, size_t length );
char *memset( void *a ,int ch, size_t length );

字符串函数在处理字符串的时候,遇到NUL就会停止,但是非字符串中有很多包含NUL的情况,那个就用到了上面的函数了。memcpy 实现的就是将 src 的数据 length 个复制到 dst 中,同时如果是整型或浮点数组,那么也不用进行强制转换,因为函数的参数是void的类型指针,所有类型的指针都可以接收,和 strcpy 相同的如果两个参数在内存中有重叠的部分,那么结果是未定义的。

但是 memmove 就解决了这个问题,它实现的功能和 memcpy 是相似的,但是它是先将第二个参数要复制的内容复制到另外的一个变量中,然后再复制给第一个参数。

memcmp 和 strcmp 比较方式相同,但是如果比较的内容不是字母范围内的东西,那么结果是不可预料的。

memchr 就是在第一参数中查找第一个 包含字符的参数 ch 的位置,并返回它的指针。

memset 的功能是将 ch 字符从第一个参数的开始进行填充,填充 length 个字节。

posted @ 2018-04-05 13:27  刘-皇叔  阅读(117)  评论(0编辑  收藏  举报