首页 > 系统相关 >(C语言)内存函数

(C语言)内存函数

时间:2024-11-08 11:17:03浏览次数:6  
标签:函数 memmove void C语言 source num 内存 memcpy

目录

1)memcpy

 1)memcpy的模拟实现

2)memmove

2)memmove的模拟实现

3)memset

4)memcmp


1)memcpy

memcpy是内存拷贝函数,其不同于strncpy在于其能拷贝任意数组;

形式:void* memcpy(void* destinatoin,char* source,size_t num);destination是目标空间地址,source是源空间地址;num是拷贝的元素个数;其返回的是目标空间的起始地址;

注意:memcpy是从source的位置开始向后赋值num个字节的数据到destination指向的内存空间;这个函数在遇到\0的时候会自动停止;如果source和destination有任何重叠,复制的结果都是未定义的,即不建议使用memcpy(arr1,arr1,num);

 1)memcpy的模拟实现

对于不同类型的数组在模拟的时候,需要注意返回的指针类型;

2)memmove

memove可以完成内存的移动,其可以用来处理重叠内存的拷贝;和memcpy的差别就是memmove函数处理的源内存块和⽬标内存块是可以重叠的。

形式:void* memmove(void* arr1,void* arr2,size_t num);

mommove可以代替memcpy;

2)memmove的模拟实现

3)memset

memset函数是用来设置内存的,将内存中的值以字节为单位设置成想要的内容;

形式:void* memset(void* ptr,int value,size_t num);value代表一个字符或数值;ptr是修改的起始位置;

4)memcmp

比较数组的大小;形式:int memcpy(const void* ptr1,const void* ptr2,size_t num);

与strncpy相似;ptr1大于ptr2返回大于0的数,等于返回0;

标签:函数,memmove,void,C语言,source,num,内存,memcpy
From: https://blog.csdn.net/2401_87944878/article/details/143607367

相关文章

  • 阿里DataWorks注册UDTF函数
    1.背景    最近有个需求需要解析mongodb里面的json数据,采用的开发平台是dataworks,原始json内容如下:{"id":0,//方案ID"premiseDetails":[{"premiseId":0,//楼盘ID"price":0,//价格"pointDetails":[......
  • python 内置函数
    1.abs(x): 返回一个数的绝对值。x=-10 print(abs(x)) #输出:10  2.all(iterable):如果可迭代对象中所有元素都为真,则返回True;否则返回False。iterable=[True,True,False] print(all(iterable)) #输出:False  13.any(iterable):如果可迭代对象中任何......
  • 重温c语言之,7天开整,就是随便的写写,第八天
    一:函数1、递归题目:求n的阶乘(不考虑溢出)上代码1#include<stdio.h>2intfactorial(intn){3if(n>1){4returnn*(factorial(n-1));5}6else7{8return1;9}10}11#include<stdio.h>12in......
  • C语言入门第二天常量
    一:常量1:整形常量a:八进制开头是0开头例如06434b:十六进制开头是0x开头例如0xd1cc:代码展示其中%d表示十进制,%o表示八进制,%x表示十六进制。2:浮点类型a:浮点常量又被称为实数,一般含有小数部分。b:float类型小数点的精度为6位c:想printf输出为浮点类型用%f;d:代码展示......
  • glibc 内存分配与释放机制详解
    作者:来自vivo互联网存储团队-WangYuzhi本文以一次线上故障为基础介绍了使用glibc进行内存管理可能碰到问题,进而对库中内存分配与释放机制进行分析,最后提供了相应问题的解决方案。一、引言内存对象的分配与释放一直是后端开发人员代码设计中需要考虑的问题,考虑不周极易......
  • 2个月搞定计算机二级C语言——真题(10)解析
    1.前言本篇我们讲解2个月搞定计算机二级C语言——真题102.程序填空题2.1题目要求2.2提供的代码#include<stdio.h>#pragmawarning(disable:4996)doublefun(doublex[],intn){ inti,k=0; doubleavg=0.0,sum=0.0; for(i=0;i<n;i++) avg......
  • ABAP开发-内存管理
    系列文章目录文章目录系列文章目录前言一、概述二、程序间调用三、外部会话和内部会话四、SAP内存与ABAP内存五、实例总结前言一、概述内存是程序之间为了传递数据而使用的共享存储空间,在每个程序里使用的内存有SAP内存和ABAP内存SAP内存分类SAP内存......
  • 书接上回说一说 JVM 中的方法区和直接内存
    方法区:在《Java虚拟机规范》中明确说明:尽管所有的方法区在逻辑上是堆内存的一部分,但一些简单的实现可能不会选择对方法区进行垃圾回收或者进行压缩。但对于HotSpot虚拟机来说,方法区还有一个名字叫Non-Heap(非堆)目的就是要和方法区分开。所以,这样来看,方法区是一块独立于......
  • c语言二维数组
    一、创建二维数组并初始化在c语言中二维数组可以在声明时直接初始化。#include<stdio.h>intmain(){//创建一个3x3的二维数组并初始化intmatrix[3][3]={{1,2,3},{4,5,6},{7,8,9}};return0;}二、访问二......
  • c语言一维数组
    一维数组数组的目的主要是为了解决在编程中需要存储和处理多个相同类型数据的问题。#include<stdio.h>intmain(){intarr[5]={1,2,3,4,5};//定义一个一维数组for(inti=0;i<5;i++){//使用for循环遍历数组printf("%d",arr[i]);//打......