C语言里面的内存函数

1.memcpy函数

(1)函数的模拟实现,这个函数的作用就是把arr1拷贝到arr2里面,单位是字节,20字节就是5整

数,所以输出的就是1234500000;

(2)之所以强制类型转换成为char*是因为这个类型的单位是字节,他的力度更加的细致;

(3)循环里面的加上1就会只移动一个字节,4次循环才拷贝1个整数;

2.memmove函数

主函数

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

函数实现

void* mymemmove(void* dest, const void* src, size_t num)
{void* ret = dest;assert(dest && src);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;
}

(1)这个函数在memcpy函数的基础上进行了优化,可以对自己和自己进行拷贝;

(2)这个函数要分为从后向前拷贝还是从前向后拷贝,因为不同的位置,拷贝的方式可能导致原

来的数据被覆盖掉

(3)这里的逻辑就是目的地在源头的前面就从前向后进行,目的地在源头的后面就从后向前进行

这个在后面是之间有交集,如果毫不相干的话就2种方式都可以;else里面的加上num就是找到最

后的位置向前拷贝;

3.memset函数

(1)函数就是实现重置,以字节作为单位,给的参数是起始地址arr,1是把范围内的元素都从0变成1,40就是范围,即40个字节,也就是10个整数,就是整个数组;

4.memcmp函数

(1)字符串的比较:⽐较从ptr1和ptr2指针指向的位置开始,向后的num个字节;我们这里相当于

全部比较;

(2)前面的2个参数分别是指向的地址,从这2个位置开始比较;

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

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

相关文章

【Python笔记-设计模式】前端控制器模式

一、说明 常作为MVC&#xff08;Model-View-Controller&#xff09;模式的一部分&#xff0c;用来处理用户请求并将其分发给相应的处理程序&#xff08;即路由匹配&#xff09;。 (一) 解决问题 将请求的处理流程集中管理&#xff0c;统一处理所有的请求 (二) 使用场景 需…

JS基础(三)-操作和流程控制

一 操作网页元素的步骤 1. 查找网页元素 给标签设置id属性&#xff0c;一个网页中的id值不允许重复 <button id"btn">按钮</button> 2. 给按钮绑定事件&#xff0c;监听用户操作 btn.onclick function(){ 一旦监听到用户的…

matlab一维二维和三维RBF插值方法

1、内容简介 略 50-可以交流、咨询、答疑 2、内容说明 略 3、仿真分析 略 matlab一维二维和三维RBF插值方法_哔哩哔哩_bilibili 4、参考论文 略

python print 格式化输出详解

print 输出字符串和数字 以下实例中列举了print打印各种类型的示例 示例如下, print("qayrup") # 直接输出字符串print(100) # 输出数字str qayrup print(str) # 输出变量L [1,2,a] # 输出列表类型变量 print(L) t (1,2,a…

【C语言】指针初阶

正文开始之前&#xff0c;我们要记住一个东西就是&#xff1a;地址指针 目录 一、指针的解释二、指针变量和地址1、取地址操作符2、指针变量和解引用操作1、指针变量2、拆解指针类型3、解引用操作符4、注意事项 3、指针变量的大小4、指针的解引用5、void*指针 三、指针的运算1、…

鸿蒙开发【WebGL】简单了解

WebGL的全称为Web Graphic Library(网页图形库)&#xff0c;主要用于交互式渲染2D图形和3D图形。目前HarmonyOS中使用的WebGL是基于OpenGL裁剪的OpenGL ES&#xff0c;可以在HTML5的canvas元素对象中使用&#xff0c;无需使用插件&#xff0c;支持跨平台。WebGL程序是由JavaScr…

Linux多线程服务端编程:使用muduo C++网络库 学习笔记 第十二章 C++经验谈(一)

作者对C的基本态度是“练从难处练&#xff0c;用从易处用”&#xff0c;因此本章有几节“负面”的内容。作者坚信软件开发一定要时刻注意减少不必要的复杂度&#xff0c;一些花团锦簇的招式玩不好反倒会伤到自己。作为应用程序的开发者&#xff0c;对技术的运用要明智&#xff…

如何在C++中实现文件操作

大家好&#xff0c;今天给大家介绍如何在C中实现文件操作&#xff0c;文章末尾附有分享大家一个资料包&#xff0c;差不多150多G。里面学习内容、面经、项目都比较新也比较全&#xff01;可进群免费领取。 在C中&#xff0c;实现文件操作主要涉及到 <fstream> 库&#xf…

[C++]虚函数用法

讲虚函数之前先讲讲面向对象的三大特性&#xff1a;封装、继承、多态。 1、封装 封装是指将数据&#xff08;属性&#xff09;和操作数据的方法&#xff08;函数&#xff09;封装在一个单元中&#xff0c;这个单元就是类。封装的主要目的是隐藏类的内部实现细节&#xff0c;只…

迪萧科技有限公司邀您参观2024生物发酵展

参展企业介绍 浙江迪萧科技有限公司位于浙江杭州&#xff0c;是一家专注于膜技术的国家高新企业。公司针对食品饮料、医药保健等领域的过程分离与控制、产品提取及浓缩、废料资源化利用等提供全方案解决服务。坚持以“顾客至上、优质服务、卓越品质”为原则。为客户企业提供清…

C# 使用onnxruntime部署夜间雾霾图像的可见度增强

目录 介绍 模型信息 效果 项目 代码 下载 C# Onnx 使用onnxruntime部署夜间雾霾图像的可见度增强 介绍 github地址&#xff1a;GitHub - jinyeying/nighttime_dehaze: [ACMMM2023] "Enhancing Visibility in Nighttime Haze Images Using Guided APSF and Gradien…

HTML+CSS+JS:轮播组件

效果演示 一个具有动画效果的卡片元素和一个注册表单,背景为渐变色,整体布局简洁美观。 Code <div class="card" style="--d:-1;"><div class="content"><div class="img"><img src="./img/果果k_01.jpg…