C语言:内存操作函数

本文详细介绍了C语言中的内存操作函数,包括memcpy用于内存拷贝,即使源内存和目标内存重叠;memmove保证在内存重叠时正确移动数据;memcmp用于逐字节比较内存;以及memset用于初始化内存区域。通过对这些函数的工作原理和使用示例的分析,帮助理解C语言中内存操作的细节。
摘要由CSDN通过智能技术生成

1.内存拷贝函数memcpy( )

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


功能:输入拷贝和被拷贝的地址还有要拷贝的字节数,然后将内存中的字节数进行拷贝


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


2.这个函数在遇到’\0’ 的时候并不会停下来。


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

之所以要传入void的地址是因为,拷贝传入的地址不知道是什么类型的地址,void能接收所有类型的地址,这一点和qsort函数的原理很像,而返回类型是void*类型是让你返回后强制类型转换后再去使用返回的指针

举例
在这里插入图片描述

模拟实现memcpy( )函数
这里的void*一上来不能直接解引用,需要强制类型转换成有类型的指针,才能去解引用

#include<stdio.h>
void* my_memcpy(void* dest, const void* src, size_t count)
{
   
	while (count)
	{
   
		*(char*)dest = *(char*)src;
		((char*)dest)++;//这里如果不加一层括号就会先++,所以要加括号
		((char*)src)++;
		//或者下成下面这两行
		//++和+1要区分一下,+1这里是指跳过一个类型,但不会
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值