【C语言】内存函数详解

server/2025/4/1 17:23:57/

在这里插入图片描述
个人主页
在这里插入图片描述

文章目录

  • 🏠一、memcpy函数
    • 1.函数形式以及功能介绍
    • 2.函数的使用
    • 3.模拟实现
  • 🚀二、memmove函数
    • 1.函数形式以及功能介绍
    • 2.函数的使用
    • 3.模拟实现
  • 🎡三、memset函数
    • 1.函数形式以及功能介绍
    • 2.函数的使用
  • 🎉四、memcmp
    • 1.函数形式以及功能介绍
    • 2.函数的使用

注意:在使用以下四个内存函数时,都需要包含头文件: #include<string.h>

🏠一、memcpy函数

1.函数形式以及功能介绍

函数形式:void * memcpy ( void * destination, const void * source, size_t num );

功能:从源空间的位置开始向后复制num个字节的数据到目标空间所指向的内存位置。

在使用该函数时需要注意以下几点:

  1. 该函数遇到 ‘\0’ 时并不会停下来
  2. 如果目标空间和源空间有位置重叠时,复制的结果都是未定义的

2.函数的使用

在这里插入图片描述

3.模拟实现

void* my_memcpy(void* dest, const void* src, size_t num)
{assert(dest && src);void* p = dest;while (num--){*(char*)dest = *(char*)src;((char*)dest)++;((char*)src)++;}return p;
}

🚀二、memmove函数

1.函数形式以及功能介绍

函数形式:void * memmove ( void * destination, const void * source, size_t num );

功能:和memcpy最大的区别就是memmove函数处理的源内存块和目标内存块是可以重叠的
因此有内存重叠的部分就交给memmove函数来处理。

2.函数的使用

在这里插入图片描述

3.模拟实现

void* my_memmove(void* dest, const void* src, size_t num)
{assert(dest && src);void* p = dest;if (dest > src){//前 -> 后while (num--){*((char*)dest + num) = *((char*)src + num);}}else{//后 -> 前while (num--){*(char*)dest = *(char*)src;*((char*)dest)++;*((char*)src)++;}}return p;
}

🎡三、memset函数

1.函数形式以及功能介绍

函数形式:void * memset ( void * ptr, int value, size_t num );

功能:用来设置内存的,将内存中的值以字节为单位设置成想要的内容。

2.函数的使用

在这里插入图片描述

🎉四、memcmp

1.函数形式以及功能介绍

函数形式:int memcmp ( const void * ptr1, const void * ptr2, size_t num );

功能:比较从ptr1和ptr2指针指向的位置开始,向后的num个字节

返回值如下:
返回值和strcmp返回值类似

2.函数的使用

在这里插入图片描述


http://www.ppmy.cn/server/178994.html

相关文章

高速开源镜像站网址列表2503

高速开源镜像站网址列表 以下是国内常用的高速开源镜像站网址列表&#xff0c;涵盖企业和教育机构的主要站点&#xff0c;适用于快速下载开源软件和系统镜像&#xff1a; 一、企业镜像站 阿里云镜像站 地址&#xff1a;https://mirrors.aliyun.com/ 特点&#xff1a;覆盖广泛…

安科瑞新能源防逆流解决方案:守护电网安全,赋能绿色能源利用

随着光伏、储能等新能源在用户侧的快速普及&#xff0c;如何避免电力逆流对电网造成冲击&#xff0c;成为行业关注的焦点。安科瑞凭借技术实力与丰富的产品矩阵&#xff0c;推出多场景新能源防逆流解决方案&#xff0c;以智能化手段助力用户实现安全、经济的能源管理&#xff0…

如何重装windows系统

制作U盘启动媒介 找一个大于8g的U盘&#xff0c;取windows的官网上下载启动器 不要下载第一个&#xff0c;会出现一些未知的问题&#xff0c;这是一个更新助手 不要下载第三个&#xff0c;这是一个iso镜像 高手用于刻录光盘或者u盘虚拟机装载 下载第二个 很快就会下载完毕&…

SmolVLM2: 让视频理解能力触手可及

一句话总结: SmolVLM 现已具备更强的视觉理解能力&#x1f4fa; SmolVLM2 标志着视频理解技术的根本性转变——从依赖海量计算资源的巨型模型&#xff0c;转向可在任何设备运行的轻量级模型。我们的目标很简单: 让视频理解技术从手机到服务器都能轻松部署。 我们同步发布三种规…

[CVPR 2025]Neuro-3D: Towards 3D Visual Decoding from EEG Signals

论文网址&#xff1a;Neuro-3D: Towards 3D Visual Decoding from EEG Signals 论文代码&#xff1a;GitHub - gzq17/neuro-3D 英文是纯手打的&#xff01;论文原文的summarizing and paraphrasing。可能会出现难以避免的拼写错误和语法错误&#xff0c;若有发现欢迎评论指正…

多线程编程

线程概念 什么是线程 在一个程序里的一个执行路线就叫做线程&#xff08;thread&#xff09;。更准确的定义是&#xff1a;线程是“一个进程内部的控制序列”一个进程至少都有一个执行线程线程在进程内部运行&#xff0c;本质是在进程地址空间内运行在Linux系统中&#xff0c…

自动驾驶系统的车辆动力学建模:自行车模型与汽车模型的混合策略及自动驾驶分层控制架构

引言 在上一篇博客自动驾驶系统的车辆动力学建模:自行车模型与汽车模型的对比分析中,我们深入探讨了自动驾驶系统中自行车模型与复杂汽车模型(如双轨模型)的对比分析,涵盖了它们的定义、差异、应用场景以及代码实现。为了进一步完善这一主题,本文将介绍混合策略的应用示…

实用工具--OfficeAI 助手 v0.3.20(长期免费,2025-03-18 本地支持WPSWord联动)

软件简介 OfficeAI助手&#xff0c;作为Microsoft Office与WPS的得力智能插件&#xff0c;集文档自动生成、内容精准校对与润色、公式智能推荐等多功能于一体。它凭借强大的数据分析能力&#xff0c;深度融入Office/WPS办公生态&#xff0c;一键简化复杂流程&#xff0c;让办公…