IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 数据结构与算法 -> C_2022_01_21 字符串&内存函数的介绍(进阶) -> 正文阅读

[数据结构与算法]C_2022_01_21 字符串&内存函数的介绍(进阶)

一、

作业标题

模拟实现memmove

(说明:memmove是较早版本momcpy的升级版,现在VS里的memcpy等同于mommove,本文第二题实现的memcpy是较早版本的memcpy,就是因为较早版本的memcpy不完美,所以开发出memmove函数,不过之后也对memcpy进行了升级,功能已与memmove一样)

作业内容

模拟实现memmove

void* My_memmove(void* Destination, void* source, size_t num)
{
	void* ret = Destination;
	if (Destination < source)                                                     
	{
		while (num--)
		{
			*(char*)Destination = *(char*)source;
			Destination = (char*)Destination + 1;
			source = (char*)source + 1;
		}
	}
	else
	{
		while (num--)
		{
			*((char*)Destination + num) = *((char*)source + num);
		}
	}
	return ret;
}

int main()
{
	int arr1[10] = { 1,2,3,4,5,6,7,8,9,10 };
	int i = 0;
	My_memmove(arr1 + 2, arr1, 5 * sizeof(arr1[0]));
	for (i = 0; i < 10; i++)
	{
		printf("%d ", arr1[i]);
	}
	return 0;
}

二、

作业标题

模拟实现memcpy

作业内容

模拟实现memcpy

void* My_memcpy(void* Destination, void* source, size_t num)
{
	void* ret = Destination;
	while (num--)
	{
		*(char*)Destination = *(char*)source;
		Destination = (char*)Destination + 1;
		source= (char*)source + 1;
	}
	return ret;
}

int main()
{
	int arr1[10] = { 1,2,3,4,5,6,7,8,9,10 };
	int arr2[5] = { 0 };
	char arr3[15] = "hello ";                                  //因为arr3实际为hello \0, 
                                                               //所以world拷贝到hello \0后 
                                                               //面时,要注意把\0给顶掉, 
                                                               //否则即使拷贝过去,程序输 
                                                               //出时遇到\0就会停止,也不 
                                                               //会打印后面的world
	char arr4[15] = "world war";
	int i = 0;
	My_memcpy(arr2, arr1 + 5, 5 * sizeof(arr1[0]));           //将arr1的第6个元素到第10个 
                                                              //元素拷贝到arr2中,共拷贝了 
                                                              //5*sizeof(arr1[0])=20个字 
                                                              //节
	My_memcpy(arr3 + 6, arr4, 5 * sizeof(arr4[0]));           //将arr4中前5个字符考到arr3 
                                                              //中,从arr3中的第七个位置开 
                                                              //始拷贝
	for (i = 0; i < 5; i++)
	{
		printf("%d ", arr2[i]);
	}
	printf("\n");
	printf("%s\n", arr3);
	return 0;
}

"hello"后面不加空格的后果

  数据结构与算法 最新文章
【力扣106】 从中序与后续遍历序列构造二叉
leetcode 322 零钱兑换
哈希的应用:海量数据处理
动态规划|最短Hamilton路径
华为机试_HJ41 称砝码【中等】【menset】【
【C与数据结构】——寒假提高每日练习Day1
基础算法——堆排序
2023王道数据结构线性表--单链表课后习题部
LeetCode 之 反转链表的一部分
【题解】lintcode必刷50题<有效的括号序列
上一篇文章      下一篇文章      查看所有文章
加:2022-03-10 22:50:47  更:2022-03-10 22:54:58 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/26 13:23:31-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码