C语言-内存函数

1,memcpy

2,memmove

3,memcmp

4,memset

------------------------------------------------------------------------------------------------------------------

1,memcpy

复制代码
#include<stdio.h>
//memcpy
//内存拷贝函数

//int main() {
//	int arr1[] = { 1,2,3,4,5,6,7,8,9,10 };
//	int arr2[20] = { 0 };
//	memcpy(arr2, arr1, 20);//注意memcpy的函数参数类型是void    (20字节,对应5个int数  )
//	int i = 0;
//	for ( i = 0; i < 5; i++)
//	{
//		printf("%d ", arr2[i]);
//	}
//
//	return 0;
//}

//模拟实现memcpy
#include<assert.h>
//void* my_memcpy(void* dest, const void* src, size_t num) {
//	assert(dest && src);
//	void* ret = dest;
//	while (num--) {
//		*(char*)dest = *(char*)src;
//		dest = (char*)dest + 1;
//		src = (char*)src + 1;
//
//	}
//	return ret;
//}
//
//void test1() {
//	int arr1[] = { 1,2,3,4,5,6,7,8,9,10 };
//	int arr2[20] = { 0 };
//	my_memcpy(arr2, arr1, 20);//注意memcpy的函数参数类型是void    (20字节,对应5个int数  )
//	int i = 0;
//	for (i = 0; i < 10; i++)
//	{
//		printf("%d ", arr2[i]);
//	}
//	printf("\n");
//}
#include<string.h>
void test2() {
	int arr1[] = { 1,2,3,4,5,6,7,8,9,10 };
	//my_memcpy(arr1+2, arr1, 20);//注意memcpy的函数参数类型是void    (20字节,对应5个int数  )
	memmove(arr1 + 2, arr1, 20);
	int i = 0;
	for (i = 0; i < 10; i++)
	{
		printf("%d ", arr1[i]);
	}
}
int main() {
	test1();
	test2();

	return 0;
}
//memcpy 负责拷贝两块独立空间中的数据
//重叠内存的拷贝,是怎么做的呢?  ===>memmove

2,memmove

复制代码
//模拟实现memmove
#include<stdio.h>
#include<string.h>
//void* my_memmove(void* dest, const void* src, size_t num) {
	assert(dest && src);
	void* ret = dest;
	if (dest<src)
	{
		//前->后
		while (num--) {
			*(char*)dest = *(char*)src;
			dest = (char*)dest + 1;
			src = (char*)src + 1;
		}
	}
	else
	{
		//后->前
		while (num--) {
			*((char*)dest+num) = *((char*)src+num);
		}
	}
	return ret;
}
void test3() {
	int arr1[] = { 1,2,3,4,5,6,7,8,9,10 };
	//my_memcpy(arr1+2, arr1, 20);//注意memcpy的函数参数类型是void    (20字节,对应5个int数  )
	my_memmove(arr1 , arr1+2, 20);// 将 3,4,5,6,7  移到 1,2,3,4,5
	int i = 0;
	for (i = 0; i < 10; i++)
	{
		printf("%d ", arr1[i]);
	}
}
int main() {
	//test1();
	test3();

	return 0;
}

3,memcmp

复制代码
#include<stdio.h>
//memcmp 
// 
int main() {
	int arr1[] = { 1,2,3,4,5 };//10 00 00 00 02 00 00 00 03 00 00 00 04 00 00 00 05 00 00 00
	int arr2[] = { 1,3,2 };//01 00 00 00 03 00 00 00 02 00 00 00
	int ret = memcmp(arr1, arr2, 12);
	printf("%d\n", ret);
	return 0;
}

4,memset

复制代码
#include<stdio.h>
//memset
int main() {
	char arr[] = "hello bit";
	memset(arr, 'x', 5);
	//memset(arr+6, 'x', 3);
	printf("%s\n", arr);
	//int arr[10] = { 0 };
	////把arr初始化全为一
	//memset(arr, 1, 40);
	//int i = 0;
	//for ( i = 0; i < 10; i++)
	//{
	//	printf("%d\n", arr[i]);
	//}
	return 0;
}
相关推荐
MC皮蛋侠客4 小时前
OPC UA 系列(一):标准全景与 Python 最小闭环——让第一条设备数据流动起来
开发语言·python·opcua
wordbaby4 小时前
混合检索:两全其美的艺术
人工智能·算法
彧azz4 小时前
数据结构:关于图的学习
c语言·数据结构·笔记·学习·算法
热心网友俣先生4 小时前
A题-药材的烘干问题-题意逐句翻译
算法·数学建模
SamChan905 小时前
PDF翻译后的格式完整性校验:用Python自动比对译文与原文档的表格与段落结构
开发语言·python·ai·pdf·机器翻译
2601_960356385 小时前
2026秋招运营分析师能力模型:SQL、指标体系、AIGC与业务分析
算法
hetao17338375 小时前
校内场-提高组 ZYZSC-S-Round 4
c++·算法
君顾15 小时前
外卖CPS系统开发实战指南:从架构设计到部署全流程解析
java·开发语言·外卖
彧azz5 小时前
二叉搜索树学习记录
c语言·数据结构·笔记·算法