【C库函数】memcpy函数详解

article/2025/9/16 17:37:13

目录

memcpy

函数原型

参数讲解

返回值讲解

函数讲解(三个注意点)


memcpy

        拷贝内存块到目标空间

函数原型

void *memcpy( void *dest, const void *src, size_t count ); 

参数讲解

参数destsrccount
解析目标空间地址要拷贝内容空间源地址拷贝内容字节数

返回值讲解

返回目标空间的起始地址 

函数讲解 

        memcpy函数不像strncpy函数一样只能拷贝字符,memcpy函数可以拷贝任意类型的内容

具体使用如下

当使用时我们要注意三个点

1、 我们一定要注意memcpy第三个参数传的是要传内容的字节数

以上面为例,我们想把arr1中前五个元素传中arr2,在memcpy就要写20。为什么呢?因为arr1为整型数组,其中包含的元素也是整型,是4个字节。而我们要传递五个整型,所以就是4*5个字节

2、目的空间大小一定要能容纳memcpy所拷贝的内容

如果拷贝在内容超过目的空间大小,那么就会溢出 编译器会报出警告

3、尽量避免dest和src所指向的地址有内存重叠的部分 

例如:我们想把arr1中1、2、3分别拷贝到3、4、5的位置时,就出现了内存重叠的现象

int main()
{int arr1[10] = { 1,2,3,4,5,6,7,8,9,10 };memcpy(arr1 + 2, arr1, 12);return 0;
}

 上述代码意思是想像图1一样,把1、2、3分别拷贝到3、4、5的位置。但是现实情况确实图2那样,因为当第一个位置中的“1”拷贝到3的位置时,“3”这个数就被替换成1,当轮到第三个位置拷贝时,就会拷贝“1”而不是“3”。

这种就是内存重叠可能出现的情况,但是现在memcpy好像解决了重叠拷贝的问题,我在vs2019和ubuntu上测试的时候,memcpy竟然没有出错!

        也许是memcpy函数有了新的改进,但是大家平常还是应该注意在使用memcpy时避免内存重叠的情况。

在vs2019上运行截图

在 ubuntu上运行截图

 

我们在使用时也会有一些使用技巧

如下,当我们想把arr1中的3、4、5、6拷贝到arr2中去时,我们可以这样写

memcpy(arr2, arr1 + 2, 16);

到这memcpy函数就讲解完了,如果大家想模拟实现memcpy函数的话

可以参考这篇文章:模拟实现memcpy库函数


http://chatgpt.dhexx.cn/article/MtdClyN2.shtml

相关文章

C语言——内存操作函数(memcpy、memmove、memcmp、memset)

文章目录 📘前言📗 一、memcpy(内存拷贝)📖 1. 函数说明📖 2. 模拟实现💡 3. 运行图示: 📗二、memmove📖 1. 函数说明📖 2. 模拟实现💡 3. 运行图…

memcpy函数详解 看这一篇就够了-C语言(函数讲解、 使用用法举例、作用)

memcpy()函数用于:复制内存块 函数介绍 函数声明:void * memcpy ( void * destination, const void * source, size_t num ); 参数 目的地:指向要在其中复制内容的目标数组的指针,类型转换为 void* 类型的指针。 源:指…

智慧校园信息化管理平台技术方案

1.2总体架构设计 智慧校园平台是以学校现有网络为基础,以服务于全校师生的教学、科研、生活为目的,建立在学校数据中心平台之上,涵盖了学校的学校管理、学生管理、教学管理、班级管理、家校共育、教务管理等全方位的管理信息平台与信息服务平…

县域教育信息化优质均衡建设解决方案

项目概述 “人才决定未来,教育成就梦想”。我国一直坚持不懈推进教育信息化,努力以信息化为手段扩大优质教育资源覆盖面。我国规划将通过教育信息化,逐步缩小区域、城乡数字差距,大力促进教育公平,让亿万孩子同在蓝天…

XXX高校数字化校园数据中心建设方案

目录 一、 项目概述 4 1.1建设背景 4 1.2建设目标 5 1.3建设原则 6 1.4云平台技术打造大数据与高性能优势 7 二、 需求分析 9 2.1现状分析 9 2.2总体建设 9 2.2.1XXX高校校园云平台需求 10 2.2.2大数据分析需求 10 2.2.3高性能需求 12 三、 数据中心总体规划 14 四…

智慧教育信息化建设解决方案

建设思路及解决方案 以数据整合、应用融合、服务聚合为目标,充分利用已有的成果,联接全校物联感知设备、构筑智能化安防体系,打造泛在化的学习环境、实现一体化的运维管控,最终形成智慧环境、智慧管理、智慧服务、智慧教学、智慧资…

信息化建设规划_职业院校教育信息化建设发展规划编制培训班圆满落幕!

9月24日至25日,由中国高等教育培训中心主办的职业院校教育信息化建设发展规划编制培训班,在重庆滨乐宝轩酒店盛大举行。会上,来自全国的教育专家、学者齐聚一堂,共同探讨智慧校园建设实现路径,面向与会的百余名教育工作…

如何建设教育信息化评价指标体系?

原创 CERNET 中国教育网络 2020-09-16 在教育信息化生态系统中,有三大推动力量:教育信息化评价指标体系制定、评估工作开展和评估建模分析,这三者相互依赖、相互影响。 01高校信息化建设的现状与问题 自从教育部发布《教育信息化2.0行动计…

某企业运营(集团)有限公司信息化建设规划方案

目录 1. 单位信息化建设现状分析 1.1 网络性能风险 1.2 管理功能风险 1.3 网络安全风险 1.4 数据安全风险 1.5 访问身份识别风险 1.6 信息化支撑环境风险 2. 需求分析 2.1 网络及管理需求分析 2.2 网络安全需求分析 2.3 …

教育信息化2.0建设解决方案

教育强则国家强,教育兴则民族兴。教育不仅关乎个体发展,家庭幸福,而且关乎国家强盛,民族复兴。教育是提高人民综合素质、促进人的全面发展的重要途径,是民族振兴、社会进步的重要基石,是对中华民族伟大复兴…

计算机在校学校目标和措施,学校信息化工作方案

学校信息化工作方案 指导思想: 以学校总体办学思路为指针,贯彻教育局信息中心,从务实、求真出发继续深入开展现代教育技术的普及工作,在积累经验的基础上,努力将信息教学普及化、提升管理使其规范化,加强管…

计算机在校学校目标和措施,学校信息化建设三年发展规划

学校信息化建设三年发展规划 为了加快学校信息化发展,明确学校信息化发展目标、方向和重点,以“科学发展观”为指导思想,依据中小学信息化发展建设的要求,针对我校信息化建设的现状,特制定三年信息化建设发展规划&…

二维正态分布的最大似然估计_最大似然估计-高斯分布

前言:介绍了最简单的 问题 (这里都是玩具数据,为了方便理解才列出) 0123456789101112 X 1 2 3 4 4.2 4.4 4.6 4.8 5 6 7 8 y 0 0 0 0 1 1 1 1 0 0 0 0 假设 x 4.9 用科学的办法估计 y 的分类。 预备知识 高斯分布的概率密度函数 高斯分布的概率密度函数…

极大似然估计详解

极大似然估计 以前多次接触过极大似然估计,但一直都不太明白到底什么原理,最近在看贝叶斯分类,对极大似然估计有了新的认识,总结如下: 贝叶斯决策 首先来看贝叶斯分类,我们都知道经典的贝叶斯公式: 其中:p(w):为先验概率,表示每种类别分布的概率;:类条件概…

【概率论】极大似然估计和最大后验估计

目录 1.前言 2 频率学派和贝叶斯学派 2.1 频率学派 2.2 贝叶斯学派 3. 极大似然估计 3.1 概率和似然 3.2 极大似然原理及求解 3.3 例题 4. 最大后验估计 4.1 最大后验估计原理 5. 参考 1.前言 极大似然估计和最大后验估计都是参数的估计方法,一定要记住&a…

极大似然估计(Maximum Likelihood Estimation)

1.极大似然估计 笔记来源:Maximum Likelihood,clearly explained!! 在日常对话中,我们说的“概率”和“似然”其实是一回事,但在统计领域中,“似然”指的是我们下面要描述的情况,即尝试为所给测量值的分布…

【转载】极大似然估计

原文链接:知行流浪 https://blog.csdn.net/zengxiantao1994/article/details/72787849 以前多次接触过极大似然估计,但一直都不太明白到底什么原理,最近在看贝叶斯分类,对极大似然估计有了新的认识,总结如下&#xff1…

p 型极大似然估计 matlab,最大似然估计的matlab实现

最大似然估计的matlab实现 最大似然估计的matlab实现 实验目的: 在MVU估计量不存在或存在但不能求解的情况下,最大似然估计是获得实用估计的最通用的方法,利用它可简便地实现对复杂的估计问题的求解。对绝大多数实用的最大似然估计&#xff…

正态分布的极大似然估计

1. 正态分布的极大似然估计 笔记来源:Maximum Likelihood For the Normal Distribution, step-by-step!!! 1.1 正态分布的参数对其形状的影响 1.1.1 μ值对正态分布的影响 1.1.2 σ值对正态分布的影响 1.2 极大似然估计 极大似然估计提供了一种给定观察数据来评…