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最多比较的个数)

• 返回值如下:

相关推荐
LDR00615 天前
Type-C 快充全面升级!LDR6601 赋能个人护理便携电机,重塑剃须刀 / 理发器新体验
c语言·开发语言
雪碧聊技术15 天前
Tree.js是什么?一文讲透
开发语言·javascript·ecmascript
码云数智-园园15 天前
C++20 Modules 模块详解
java·开发语言·spring
swordbob15 天前
NIO的channel中什么是 fd(File Descriptor,文件描述符)
java·开发语言·nio
源分享15 天前
Java线程同步的多种实现方法(非常详细)
java·开发语言·jvm
Luminous.15 天前
C语言--day30
c语言·开发语言
玖玥拾15 天前
C/C++ 数据结构(七)栈、容器适配器
c语言·数据结构·c++··容器适配器
何以解忧,唯有..15 天前
Go语言循环语句详解:for、range与循环控制
开发语言·算法·golang
謓泽15 天前
C语言不是语法,是通往机器的地图。
c语言·开发语言
云水一下15 天前
从零开始学 PHP 系列(一):PHP 的前世今生与开发环境搭建
开发语言·php