提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档
目录
前言
1. memcpy 使用和模拟实现
1.1memcpy函数的使用
1.2memcpy函数的模拟实现
2. memmove 使用和模拟实现
2.1memmove的使用
2.2memmove函数的模拟实现
3. memset 函数的使用
4. memcmp 函数的使用
补充一些零散的额外知识点:
总结
前言
世上有两种耀眼的光芒,一种是正在升起的太阳,一种是正在努力学习编程的你!一个爱学编程的人。各位看官,我衷心的希望这篇博客能对你们有所帮助,同时也希望各位看官能对我的文章给与点评,希望我们能够携手共同促进进步,在编程的道路上越走越远!
想回顾上节内容的请点击这里字符函数和字符串函数详解
提示:以下是本篇文章正文内容,下面案例可供参考
针对内存块的!不在乎内存中的数据!
1. memcpy 使用和模拟实现
1.1memcpy函数的使用
void * memcpy ( void * destination, const void * source, size_t num );
• 函数memcpy从source的位置开始向后复制num个字节的数据到destination指向的内存位置。
• 这个函数在遇到 '\0' 的时候并不会停下来。
• 如果source和destination有任何的重叠,复制的结果都是未定义的。
1.2memcpy函数的模拟实现
memcpy函数可以处理不重叠的内存之间的数据拷贝
内存之间如果有数据重叠,要进行数据拷贝,可以使用memmove函数
代码演示:
2. memmove 使用和模拟实现
void * memmove ( void * destination, const void * source, size_t num );
memcpy函数只要能够处理不重叠的内存拷贝就行,重叠的情况就交给memmove函数就行了
但是我们发现(vs系类)有时候标准库中的memcpy也能实现重叠拷贝,但是并不代表所有的编译器实现的标准库中的memcpy都能实现重叠拷贝
2.1memmove的使用
2.2memmove函数的模拟实现
3. memset 函数的使用
void * memset ( void * ptr, int value, size_t num );
memset是用来设置内存的,将内存中的值以字节为单位设置成想要的内容。
设置字符:
设置整型:
4. memcmp 函数的使用
int memcmp ( const void * ptr1, const void * ptr2, size_t num );
memcmp--比较ptr1的前num个字节和ptr2的前num个字节做比较
比较字符:
比较整型:
补充一些零散的额外知识点:
sizeof(数组名):只有在定义数组的时候才代表整个数组,在传参的时候,并不代表整个数组
在linux下,assert宏不管是在debug,还是在release版本下,都会起作用
如果循环读入字符串的话,scanf()遇到空格,就停止读取,一定要用gets()才能完整的读取一个字符串
在#if 0 和#endif 之间的代码是不参与编译的
总结
好了,本篇博客到这里就结束了,如果有更好的观点,请及时留言,我会认真观看并学习。
不积硅步,无以至千里;不积小流,无以成江海。