广告
返回顶部
首页 > 资讯 > 后端开发 > 其他教程 >C语言内存操作函数详解
  • 745
分享到

C语言内存操作函数详解

2024-04-02 19:04:59 745人浏览 八月长安
摘要

目录头文件:#include<memory.h>1.memcpy2.memmove3.memcmp4.memset总结头文件:#include<memory.h&g

头文件:#include<memory.h>

1.memcpy

作用:内存拷贝

函数原型:


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

使用:

使用格式:memcpy(目的地,原,想操作内存大小(单位字节))

把 "参数2" 起始的 "参数3" 个字节 内容拷贝到 "参数1 '

memecpy函数类似于strncpy。

例:


#include <memory.h>
#include <string.h>
#include <stdio.h>
int main()
{
	int aa[] = { 1,2,3,4 };
	int bb[10] = { 0 };
	memcpy(bb, aa, 4 * sizeof(int));//把aa数组中4*4(每个int类型是4字节)内容拷贝到bb数组
	for (int i = 0; i < 10; i++) //打印bb数组全部数据
	{
		printf("%d ", bb[i]);
	}	
}

最后bb字符串中前4*4个字节的内容被改为aa的内容

注意 :memcpy不能拷贝重叠内存。


#include <memory.h>
#include <string.h>
#include <stdio.h>
int main()
{
	int aa[] = { 1,2,3,4,5,6,7,8,9,10 };
	my_memcpy(aa + 2, aa, 24);
	for (int i = 0; i < 10; i++)
	{
		printf("%d ", aa[i]);
	}
}

输出:

拷贝重叠内存会出现这样的问题。

2.memmove

作用:内存拷贝(可拷贝重叠内存)

原型:


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

使用与memcpy一样,只是memmove可以拷贝重叠内存


#include <memory.h>
#include <string.h>
#include <stdio.h>
int main()
{
	int aa[] = { 1,2,3,4,5,6,7,8,9,10 };
	memmove(aa + 2, aa, 24);
	for (int i = 0; i < 10; i++)
	{
		printf("%d ", aa[i]);
	}
}

出:

同样的代码使用memmove就可以.

3.memcmp

作用:内存比较

函数原型:


int memcmp( const void *buf1, const void *buf2, size_t count );
 

使用:

使用格式:memcmp(地址1,地址2,想要比较的内存大小 单位bit)

逐字节比较内存大小,

逐字节一对一对比较!!

返回值有三种情况:

<0 “参数1” 与 “参数2” 逐字节比较时遇到的第一对不同的内存时 “参数1” 中数据 < “参数2”。

=0 “参数1” 与 “参数2” 中的前“ 参数” 三个字节的内容完全相等。

>0 “参数1” 与 “参数2” 逐字节比较时遇到的第一对不同的内存时 “参数1” 中数据 > “参数2”。

4.memset

作用:内存设置

函数原型:


void *memset( void *dest, int c, size_t count );
 

使用:

使用格式:memset(地址,一个数,设置多少字节)

例:


#include <memory.h>
int main()
{
	int a[] = {1,2,3,4,5};
	memset(a, 1, 20);//把从a开始的前二十个字节内容改成1
}

结果:

总结

本篇文章就到这里了,希望能够给你带来帮助,也希望您能够多多关注编程网的更多内容!

--结束END--

本文标题: C语言内存操作函数详解

本文链接: https://www.lsjlt.com/news/154782.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • C语言内存操作函数详解
    目录头文件:#include<memory.h>1.memcpy2.memmove3.memcmp4.memset总结头文件:#include<memory.h&g...
    99+
    2022-11-12
  • C语言动态内存函数详解
    目录动态开辟空间的原因 1、malloc函数2、free函数3、calloc函数4、realloc函数总结动态开辟空间的原因 静态开辟空间是固定的,数组在申明的时候必须指定数组的长...
    99+
    2022-11-12
  • C语言内存操作函数使用示例梳理讲解
    目录一、memcpy()函数原型参数说明模拟算法使用示例二、memmove()函数原型参数说明模拟算法使用示例三、memset()函数原型参数说明使用说明使用示例四、memcmp()...
    99+
    2022-11-13
  • C语言的字符串函数,内存函数笔记详解
    目录strlenstrlen模拟实现strcpystrcpy的模拟实现strcatstrcat的模拟实现strcmpstrcmp模拟实现strstrstrstr模拟实现strncpy...
    99+
    2022-11-12
  • C语言文件操作之fread函数详解
    目录前言一、fread 函数二、缓冲区受限的情况 ( 循环读取文件 | feof 函数判定文件读取完毕 )三、处理乱码问题四、记录读取的字节个数五、读取到 0 字节的情况六、读取完毕...
    99+
    2022-11-13
  • C语言超详细讲解字符串函数和内存函数
    目录字符串函数长度不受限制的字符串函数strlenstrcpystrcatstrcmp长度受限制的字符串函数介绍strncpystrncatstrncmp字符串查找以及错误报告str...
    99+
    2022-11-13
  • C语言中操作字符串的函数详解
    目录一、函数表二、strlen实例三、strcmp实例四、strcpy实例五、stract实例六、strchr实例总结一、函数表 函数名函数功能strlensize_t strlen...
    99+
    2022-11-13
  • C语言深入详解四大内存函数的使用
    目录1.memcpy2.memmove3.memcmp4.memset1.memcpy 与字符串函数 strcpy 类似,也是进行拷贝。但是需要注意的是,strcpy 是针对字符串进...
    99+
    2022-11-13
  • C语言lseek()函数详解
     头文件: #include <sys/types.h> #include <unistd.h> 函数原型: off_t lseek(in...
    99+
    2022-11-12
  • C语言memset函数详解
    目录一、memset函数原型:二、使用memset函数三、给int类型赋值为1四、扒开内存五、memset给变量赋值总结在c语言中,使用变量前,需要先对变量的值进行初始化。数组在内存...
    99+
    2022-11-12
  • 详解C语言之函数
    目录函数的调用函数调用方式函数嵌套调用递归调用内部函数与外部函数内部函数外部函数局部变量与全局变量局部变量全局变量总结函数的调用 函数调用方式 函数语句调用 函数表...
    99+
    2022-11-12
  • C语言深入讲解内存操作问题
    目录一、野指针二、野指针的由来三、基本原则四、小结-上 五、常见的内存错误六、内存操作的规则七、小结-下 一、野指针 指针变量中的值是非法的内存地址,进而形成野指...
    99+
    2022-11-13
  • C语言的动态内存分配及动态内存分配函数详解
    目录mallocmalloc的使用:freecalloccalloc的使用:reallocrealloc的使用改进:realloc的另一种用法:常见的动态内存错误对空指针的解引用操作...
    99+
    2022-11-13
  • C语言内存函数memcpy,memmove,memcmp
    目录一、memcpy函数1.用法2.模拟实现memcpy函数二、memmove函数1.用法2.模拟实现memmove函数三、memcmp函数1.用法2.模拟实现memcmp函数一、m...
    99+
    2022-11-13
  • C语言数据在内存中的存储详解
    目录文章摘要一、C语言的数据类型数据类型基本分为: 二、隐式类型转换1.什么是隐式类型转换2.整型提升 3.类型转换三、机器大小端1.什么是大小端2.大小端在截断的应用3....
    99+
    2022-11-12
  • C语言可变参数与函数参数的内存对齐详解
    目录什么是可变参数?使用可变参数函数参数的内存对齐总结什么是可变参数? 有时,您可能会碰到这样的情况,您希望函数带有可变数量的参数,而不是预定义数量的参数。 C 语言为这种情况提供了...
    99+
    2022-11-13
  • C语言字符串函数操作(strlen,strcpy,strcat,strcmp)详解
    目录一.strlen函数模拟二. strcpy函数模拟 三.strcat函数模拟四.strcmp函数模拟总结一.strlen函数模拟 字符串以‘\0&rsquo...
    99+
    2022-11-12
  • C语言与C++中内存管理详解
    目录内存分布动态内存管理方式-堆区C语言动态内存管理C++动态内存管理new和delete的用法operator new与operator delete函数new和dele...
    99+
    2022-11-13
  • C语言文件操作详解
    目录一、什么是文件二、文件缓冲区三、文件指针四、文件的打开和关闭。总结一、什么是文件 在程序设计中,我们一般谈的文件有两种:程序文件、数据文件。 程序文件: 包括源程序文件(后缀为....
    99+
    2022-11-12
  • 详解C语言之操作符
    目录1.加减乘2.除(/)注意:3.取余(%)注意:4.移位操作符(>> <<)注意5.位操作符(| ,& ,^)6.逻辑操作符(&&...
    99+
    2022-11-12
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作