C语言内存函数讲解

ops/2025/3/18 9:14:05/

(一)memcpy函数

这是memcpy函数的说明。它的头文件是string.h。函数原型是

void* memcpy(void* destination, const void* source, size_t num)

第一个参数是一个指向一个字符串的指针,第二个也是一样的。而第三个参数是复制的字节个数。这个函数的作用是将第二个字符串中首字节之后的num个字节复制到第一个字符串中去。这个函数遇到'\0'并不会停下来。而且这个函数不能处理同一个字符串复制的地方重叠的情况。下面是memcpy的模拟实现

void * memcpy ( void * dst, const void * src, size_t count)
{void * ret = dst;assert(dst);assert(src);/** copy from lower addresses to higher addresses*/while (count--) {*(char *)dst = *(char *)src;dst = (char *)dst + 1;src = (char *)src + 1;}
return(ret);
}

(二)memmove函数

memmove和memcpy的作用一样,但memmove比memcpy更具优势。memmove能处理重叠的部分,但memcpy不能处理重叠的部分下面是memmove的模拟实现

void * memmove ( void * dst, const void * src, size_t count)
{void * ret = dst;if (dst <= src || (char *)dst >= ((char *)src + count)) {/** Non-Overlapping Buffers* copy from lower addresses to higher addresses*/while (count--) {*(char *)dst = *(char *)src;dst = (char *)dst + 1;src = (char *)src + 1;}}else {/** Overlapping Buffers* copy from higher addresses to lower addresses*/dst = (char *)dst + count - 1;src = (char *)src + count - 1;while (count--) {*(char *)dst = *(char *)src;dst = (char *)dst - 1;src = (char *)src - 1;}}return(ret);
}

(三)memset函数

memset的作用是把目标字符串往后的num个字节中替换成函数参数的第二个值。memset的模拟实现的思路在之前的文章有,而且很简单,这里不再赘述

(四)memcmp

memcmp是比较两个内存中的值的函数。函数的原型是

int memcmp(const void* ptr1, const void* ptr2, size_t num)

和strcmp的思路一模一样,只是对比的单位是字节而不是字符串中的字符。


http://www.ppmy.cn/ops/166729.html

相关文章

使用kubeadm方式以及使用第三方工具sealos搭建K8S集群

目录 kubeadm方式: 一、安装要求 二、环境准备 二、安装Docker、kubeadm、kubelet 1、安装Docker &#xff08;1&#xff09;首先配置一下Docker的阿里yum源 &#xff08;2&#xff09;然后用yum 方式安装docker &#xff08;3&#xff09;配置Docker镜像加速器 &#…

文本检测-文本内容审核-文本过滤接口如何用PHP调用?

一、什么是文本检测接口呢&#xff1f; 文本内容审核过滤&#xff0c;提供对敏感事件、违规词语及监管要求封禁词语的识别审核能力&#xff0c;包含海量历史数据&#xff0c;有效过滤违禁违规、恶意推广、低俗辱骂、低质灌水、广告法审核&#xff0c;该接口应用场景广泛&#…

ONNX:统一深度学习工作流的关键枢纽

引言 在深度学习领域&#xff0c;模型创建与部署的割裂曾是核心挑战。不同框架训练的模型难以在多样环境部署&#xff0c;而 ONNX&#xff08;Open Neural Network Exchange&#xff09;作为开放式神经网络交换格式&#xff0c;搭建起从模型创建到部署的统一桥梁&#xff0c;完…

C++异常

文章目录 异常的概念异常的抛出&#xff08;throw&#xff09;和捕获&#xff08;catch&#xff09;“栈展开”查找匹配的处理代码异常的重新抛出异常安全问题异常规范标准库的异常 异常的概念 异常处理机制允许程序中独立开发的部分能够在运行时就出现的问题进行通信并做出相应…

Linux查找tomcat的路径

在 Linux 系统中&#xff0c;查找 Tomcat 的安装路径可以通过以下几种方法实现&#xff1a; 方法 1&#xff1a;通过 ps 命令查找 运行以下命令&#xff0c;查找 Tomcat 的进程&#xff1a; ps -ef | grep tomcat输出结果中会显示 Tomcat 的启动命令&#xff0c;例如&#xff1…

C++抽象与类的核心概念解析

在C中&#xff0c;抽象&#xff08;Abstraction&#xff09; 是面向对象编程&#xff08;OOP&#xff09;的核心概念之一&#xff0c;它通过隐藏复杂的实现细节&#xff0c;仅暴露必要的接口来实现对现实世界的简化建模。类&#xff08;Class&#xff09; 是实现抽象的核心工具…

企业管理杂谈:产品经理的选拔和培养——企业产品创新发展的关键

企业管理杂谈&#xff1a;产品经理的选拔和培养——企业产品创新发展的关键 恒易管理咨询 产品经理才是掌握未来企业产品发展方向的掌舵人。今天就想就“产品经理”这个概念&#xff0c;继续深入探讨一下企业如何选拔和培养什么样的产品经理。 一、产品经理的战略地位 在商业世…

XML 树结构

XML 树结构 引言 XML(可扩展标记语言)是一种用于存储和传输数据的标记语言,它以树状结构存储信息。XML 树结构是一种用于描述和表示XML文档的逻辑结构的方法。本文将深入探讨XML树结构的概念、特点及其在数据处理中的应用。 XML 树结构的基本概念 XML 文档结构 XML 文档…