C语言中的内存函数你知道多少呢?

目录

 ​编辑

1. memcpy的使用和模拟实现

1.1函数介绍

​编辑

1.2函数的使用

1.3模拟实现

2. memmove的使用和模拟实现

2.1函数介绍

2.2函数的使用

2.3模拟实现

3. memset函数的使用

3.1函数介绍

3.2函数的使用

​编辑

4. memcmp函数的使用

4.1函数介绍

4.2函数的使用

完结散花


 

                           不是每个人都能做自己想做的事,成为自己想成为的人。

                                                  克心守己,律己则安

创作不易,宝子们!如果这篇文章对你们有帮助的话,别忘了给个免费的赞哟~ 

1. memcpy的使用和模拟实现

1.1函数介绍

注:使用该函数需要引用头文件#include<string.h> 

1.2函数的使用

假设我们要将arr1中的前20个字节拷贝到数组arr2中~

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

 运行效果如下~

我们可以看到屏幕上打印了1 2 3 4 5 ~怎么样,使用是不是很简单呢?

1.3模拟实现

那让我们模拟实现一下这个函数,相信我们会对其有更加深刻的理解呢~

.  模拟实现之前我们还要了解一下指针类型void*

.  当我们无法确定传递过来的实参的指针是什么类型时,我们就可以用void*来接受

.  但我们还要知道的一点是对于指针void*,我们无法对其进行指针运算

void* my_memcpy(void* dest, const void* src, size_t num)
{assert(dest && src);//判断指针的有效性void* ret = dest;//用ret记录dest目标函数的起始位置while (num--){//强制类型转化为char*对其进行指针运算*(char*)dest = *(char*)src;dest = (char*)dest + 1;src = (char*)src + 1;//*((char*)dest)++ = *((char*)src)++;这种写法在VS2022上可行,但不能确保所有编译器上都可行}return ret;
}

2. memmove的使用和模拟实现

2.1函数介绍

2.2函数的使用

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

我们来看一下运行效果~

2.3模拟实现

那让我们模拟实现一下这个函数,相信我们会对其有更加深刻的理解呢~

void* my_memmove(void* dest, const void* src, size_t num)
{assert(dest && src);void* ret = dest;if (src>dest)//从前往后复制{while (num--){*(char*)dest = *(char*)src;dest = (char*)dest + 1;src = (char*)src + 1;}}else//从后往前复制{dest = (char*)dest + num-1;src = (char*)src + num-1;while (num--){*(char*)dest = *(char*)src;dest = (char*)dest - 1;src = (char*)src - 1;}//while (num--)//{//	*((char*)dest + num) = *((char*)src + num);//}这样写也行}return ret;
}

 算法的图解放在下面啦~

3. memset函数的使用

3.1函数介绍

3.2函数的使用

int main()
{int arr[10] = { 0 };memset(arr, 1, 20);return 0;
}

调试我们看一下效果~

是不是很简单呢~


4. memcmp函数的使用

4.1函数介绍

4.2函数的使用

int main()
{int arr1[10] = { 1,2 };int arr2[10] = { 1,3 };printf("前4个字节比较%d\n", memcmp(arr1, arr2, 4));printf("前5个字节比较%d\n", memcmp(arr1, arr2, 5));printf("前8个字节比较%d\n", memcmp(arr1, arr2, 8));return 0;
}

我们来看一下运行效果~

完结散花

好了,这期的分享到这里就结束了~

如果这篇博客对你有帮助的话,可以用你们的小手指点一个免费的赞并收藏起来哟~

如果期待博主下期内容的话,可以点点关注,避免找不到我了呢~

我们下期不见不散~~

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/672912.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

debian12 - openssh-9.6.P1的编译安装

文章目录 debian12 - openssh-9.6.P1的编译安装概述笔记备注END debian12 - openssh-9.6.P1的编译安装 概述 在debian12上, 源码编译安装了openssl3.2 导致ssh失败. lostspeeddebian12d4x64:~$ openssl version OpenSSL 3.2.0 23 Nov 2023 (Library: OpenSSL 3.2.0 23 Nov 2…

HCIA-HarmonyOS设备开发认证V2.0-3.轻量系统内核基础

目录 一、前言二、LiteOS-M系统概述三、内核框架3.1、CMSIS 和 POSIX 整体架构3.2、LiteOS-M内核启动流程 四、内核基础4.1、任务管理4.2、时间管理(待续)4.3、中断管理(待续)4.4、软件定时器(待续) 五、内存管理5.1、静态内存(待续)5.2、动态内存(待续) 六、内核通信机制6.1、…

从差旅申请到易快报,企业如何通过聚道云实现流程自动化?

客户介绍 深圳某有限公司是一家专注于软件开发与解决方案。公司主要提供全面的技术支持和服务&#xff0c;涵盖了多个领域&#xff0c;包括但不限于教育、企业级服务、工具类软件等。该公司产品旨在为每一所学校、每一个学生及家庭提供简单高效的编程创作体验和专业服务&#…

Linux内核与驱动面试经典“小”问题集锦(4)

接前一篇文章&#xff1a;Linux内核与驱动面试经典“小”问题集锦&#xff08;3&#xff09; 问题5 问&#xff1a;Linux内核中内存分配都有哪些方式&#xff1f;它们之间的使用场景都是什么&#xff1f; 备注&#xff1a;这个问题是笔者近期参加蔚来面试时遇到的一个问题。这…

React+Antd实现省、市区级联下拉多选组件(支持只选省不选市)

1、效果 是你要的效果&#xff0c;咱们继续往下看&#xff0c;搜索面板实现省市区下拉&#xff0c;原本有antd的Cascader组件&#xff0c;但是级联组件必须选到子节点&#xff0c;不能只选省&#xff0c;满足不了页面的需求 2、环境准备 1、react18 2、antd 4 3、功能实现 …

【制作100个unity游戏之23】实现类似七日杀、森林一样的生存游戏14(附项目源码)

本节最终效果演示 文章目录 本节最终效果演示系列目录前言给树添加动画摇晃动画 效果&#xff08;后补效果&#xff09;源码完结 系列目录 前言 欢迎来到【制作100个Unity游戏】系列&#xff01;本系列将引导您一步步学习如何使用Unity开发各种类型的游戏。在这第23篇中&…

春节回家坐飞机后助听器就不好用了?如何过安检、拖运?

春节即将来临&#xff0c;很多人都要乘坐飞机回家或者出游。如果你是一位助听器使用者&#xff0c;你可能会有一些疑问&#xff1a;坐飞机能戴助听器吗&#xff1f;助听器会不会受到安检设备的影响&#xff1f;直接将助听器放在传送带上可以吗&#xff1f;……别担心&#xff0…

RabbitMQ-5.消费者的可靠性

消费者的可靠性 5.消费者的可靠性5.1.消费者确认机制5.2.失败重试机制5.3.失败处理策略5.4.业务幂等性5.4.1.唯一消息ID5.4.2.业务判断 5.5.兜底方案 5.消费者的可靠性 当RabbitMQ向消费者投递消息以后&#xff0c;需要知道消费者的处理状态如何。因为消息投递给消费者并不代表…

U盘显示空间小于实际U盘空间的解决方案

大家好,我是爱编程的喵喵。双985硕士毕业,现担任全栈工程师一职,热衷于将数据思维应用到工作与生活中。从事机器学习以及相关的前后端开发工作。曾在阿里云、科大讯飞、CCF等比赛获得多次Top名次。现为CSDN博客专家、人工智能领域优质创作者。喜欢通过博客创作的方式对所学的…

2024年【陕西省安全员C证】试题及解析及陕西省安全员C证复审考试

题库来源&#xff1a;安全生产模拟考试一点通公众号小程序 陕西省安全员C证试题及解析是安全生产模拟考试一点通总题库中生成的一套陕西省安全员C证复审考试&#xff0c;安全生产模拟考试一点通上陕西省安全员C证作业手机同步练习。2024年【陕西省安全员C证】试题及解析及陕西…

Java玩转《啊哈算法》解密回文之栈

菩萨清凉月&#xff0c;常游毕竟空&#xff0c;众生心垢净&#xff0c;菩提影现中。 这目录 这开头这代码地址栈案例代码优化建议类似扩展 这开头 各位女士们&#xff0c;先生们好&#xff01;本人最近在看《啊哈算法》&#xff0c;这本书写的确实还可以&#xff0c;很有趣味性…

IEC 104电力规约详细解读(三) - 遥信

1.功能简述 遥信&#xff0c;、即状态量&#xff0c;是为了将断路器、隔离开关、中央信号等位置信号上送到监控后台的信息。遥信信息包括&#xff1a;反应电网运行拓扑方式的位置信息。如断路器状态、隔离开关状态&#xff1b;反应一次二次设备工作状况的运行信息&#xff0c;如…

Leetcode刷题-(11~15)-Java+Python+JavaScript

算法是程序员的基本功&#xff0c;也是各个大厂必考察的重点&#xff0c;让我们一起坚持写算法题吧 遇事不决&#xff0c;可问春风&#xff0c;春风不语&#xff0c;即是本心。 我们在我们能力范围内&#xff0c;做好我们该做的事&#xff0c;然后相信一切都事最好的安排就可…

考研数据结构笔记(3)

顺序表存储结构 存储结构顺序结构定义基本操作的实现静态分配问题 动态分配代码功能 顺序表的特点: 顺序表小结顺序表的插入删除插入删除小结 顺序表的查找按位查找按值查找小结 存储结构 顺序结构 定义 线性表是具有相同数据类型的n(n>0)个数据元素的有限序列(每个数据元素…

JavaScript流程控制详解之循环结构(倒三角、九九乘法表)

循环结构 在JavaScript中&#xff0c;循环语句指的是在满足某个条件下重复执行 指定的一段代码。若条件结果为true,则重复执行&#xff0c;则进入循环&#xff0c;否则结束循环。 在JavaScript中&#xff0c;循环语句如下&#xff1a; while语句do…while语句for语句 while…

shell脚本基础语法(.sh ./ sh bash source shell)

Linux 之 Shell 脚本基础语法 0. 学习一门语言的顺序 1. Shell 编程概述 1.1 Shell 名词解释 在 Linux 操作系统中&#xff0c;Shell 是一个命令行解释器&#xff0c;它为用户提供了一个与操作系统内核交互的界面。用户可以通过 Shell 输入命令&#xff0c;然后 Shell 将这些…

ONLYOFFICE 文档开发者版 8.0:API和文档生成器更新

随着 8.0 版新功能的发布&#xff0c;我们更新了编辑器、文档生成器和插件的 API。请阅读本文了解详情。 PDF 支持 我们在 documentType 参数中添加了 pdf 文档这一类型。现在完全支持PDF文件*&#xff0c;包括含有可填写字段的文件&#xff0c;并且可以在ONLYOFFICE PDF 编辑…

深入了解Spring Expression Language(SpEL)

深入了解Spring Expression Language&#xff08;SpEL&#xff09; Spring Expression Language&#xff08;SpEL&#xff09;是Spring框架中强大的表达式语言&#xff0c;它在运行时提供了一种灵活的方式来评估字符串表达式。SpEL的设计目标是在各种Spring配置和编程场景中提供…

亚马逊AWS考试认证系列 - Retake是考试的坚强后盾

为什么说Retake是考试的坚强后盾&#xff1f; 在AWS的认证考试体系里面&#xff0c;Retake 是一次重考的机会&#xff0c;允许考生在第一次未通过考试的情况下&#xff0c;再次免费参加考试&#xff0c;注意是免费的。这为考生提供了一个机会来重新准备并且免费再次进行考试。…

【数据库】Unlogged 表使用

【数据库】Unlogged 表使用 前言普通表和Unlogged 表的写性能比较普通表创建和数据插入Unlogged 表创建和数据插入比较结果 Unlogged 表崩溃和正常关闭测试Unlogged 表特点总结 前言 大神偶像在开会上提及了Unlogged 表&#xff0c;它的特点很不错&#xff0c;很适合实时数据保…