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

• 返回值如下:

相关推荐
_extraordinary_18 分钟前
Java SpringMVC(二) --- 响应,综合性练习
java·开发语言
@。1241 小时前
对于灰度发布(金丝雀发布)的了解
开发语言·前端
程序员老舅2 小时前
干货|腾讯 Linux C/C++ 后端开发岗面试
linux·c语言·c++·编程·大厂面试题
hsjkdhs2 小时前
C++之多层继承、多源继承、菱形继承
开发语言·c++·算法
Full Stack Developme2 小时前
Python Redis 教程
开发语言·redis·python
qq_4924484463 小时前
Jmeter设置负载阶梯式压测场景(详解教程)
开发语言·python·jmeter
ID_180079054734 小时前
京东获取整站实时商品详情数据|商品标题|数据分析提取教程
java·开发语言
qiuiuiu4134 小时前
正点原子RK3568学习日志-编译第一个驱动程序helloworld
linux·c语言·开发语言·单片机
爱吃橘的橘猫4 小时前
嵌入式系统与嵌入式 C 语言(2)
c语言·算法·嵌入式
molong9315 小时前
Kotlin 内联函数、高阶函数、扩展函数
android·开发语言·kotlin