C语⾔:内存函数

1. memcpy使⽤和模拟实现(对内存块的复制,不在乎类型)

void * memcpy ( void * destination, const void * source, size_t num );

• 函数memcpy从source的位置开始向后复制num个字节的数据到destination指向的内存位置。

• 这个函数在遇到 '\0' 的时候并不会停下来。

• 如果source和destination有任何的重叠,复制的结果都是未定义的。

注意:num代表字节。

memcpy函数的模拟实现:

void*:针对各种类型的传参;

assert:断言不为空指针;

count--:循环20次;

使用*char类型来解引用,一次访问一个字节;

memcpy拷贝结束后,会返回目标空间的起始地址。

2. memmove使⽤和模拟实现

void * memmove ( void * destination, const void * source, size_t num );

• 和memcpy的差别就是memmove函数处理的源内存块和⽬标内存块是可以重叠的。

• 如果源空间和⽬标空间出现重叠,就得使⽤memmove函数处理。

memmove的模拟实现:

3. memset函数的使⽤

void * memset ( void * ptr, int value, size_t num );

void*ptr:指向被填充内存块的指针;

int value:被设置成的内容。

memset是⽤来设置内存的,将内存中的值以字节为单位设置成想要的内容。

4. memcmp函数的使⽤(内存块的比较)

int memcmp ( const void * ptr1, const void * ptr2, size_t num );

void *:代表什么类型都可以比较)

• ⽐较从ptr1和ptr2指针指向的位置开始,向后的num个字节(num最多比较的个数)

• 返回值如下:

相关推荐
CodeCraft Studio3 小时前
PDF处理控件Aspose.PDF教程:使用 Python 将 PDF 转换为 Base64
开发语言·python·pdf·base64·aspose·aspose.pdf
零点零一3 小时前
VS+QT的编程开发工作:关于QT VS tools的使用 qt的官方帮助
开发语言·qt
lingchen19065 小时前
MATLAB的数值计算(三)曲线拟合与插值
开发语言·matlab
索迪迈科技5 小时前
基于野火F407开发板实现电源管理-停止模式
c语言·stm32·单片机·嵌入式硬件·mcu
gb42152876 小时前
java中将租户ID包装为JSQLParser的StringValue表达式对象,JSQLParser指的是?
java·开发语言·python
一朵梨花压海棠go6 小时前
html+js实现表格本地筛选
开发语言·javascript·html·ecmascript
蒋星熠6 小时前
Flutter跨平台工程实践与原理透视:从渲染引擎到高质产物
开发语言·python·算法·flutter·设计模式·性能优化·硬件工程
小莞尔6 小时前
【51单片机】【protues仿真】基于51单片机宠物投食系统
c语言·stm32·单片机·嵌入式硬件·51单片机
翻滚丷大头鱼6 小时前
Java 集合Collection—List
java·开发语言
aramae6 小时前
C++ -- 模板
开发语言·c++·笔记·其他