首页 > 系统相关 >c语言内存函数

c语言内存函数

时间:2024-09-21 18:50:52浏览次数:3  
标签:10 语言 int void num 内存 arr1 include 函数

1、memcpy

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

函数memcpy从source的位置开始向后复制num个字节的数据到destination指向的内存位置。

这个函数在遇到 '\0' 的时候并不会停下来。

如果source和destination有任何的重叠,复制的结果都是未定义的。

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

2. memmove

void * memmove ( void * destination, const void * source, size_t num );

和memcpy的差别就是memmove函数处理的源内存块和⽬标内存块是可以重叠的。

如果源空间和⽬标空间出现重叠,就得使⽤memmove函数处理。

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

输入结果

 1 2 1 2 3 4 5 8 9 10

3. memset

void * memset ( void * ptr, int value, size_t num );

memset是⽤来设置内存的,将内存中的值以字节为单位设置成想要的内容。

#include <stdio.h>
#include <string.h>
int main ()
{
 char str[] = "hello world";
 memset (str,'a',6);
 printf(str);
 return 0;
}

输出结果:

aaaaaaworld

4. memcmp

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

⽐较从ptr1和ptr2指针指向的位置开始,向后的num个字节

如果ptr1>ptr2就返回正数,ptr1<ptr2返回负数,相等返回0

标签:10,语言,int,void,num,内存,arr1,include,函数
From: https://blog.csdn.net/m0_74769625/article/details/142420725

相关文章

  • 自然语言处理综述笔记
    自然语言处理综述自然语言处理涉及许多领域,包括词汇、句法、语义和语用分析,文本分类、情感分析、自动摘要、机器翻译和社会计算等。自然语言处理主要分两个流程:自然语言理解(NLU)和自然语言生成(NLG)处理流程大致可分为五步:第一步获取语料。第二步对语料进行预处理,其中包括语料......
  • java 内存加载几个忆数据
    一:概述在现代软件开发中,随着数据量的不断增长,我们经常会遇到需要处理大规模数据的场景。Java,作为一种广泛使用的编程语言,其内存管理和数据处理能力受到了极大的考验。本文将探讨在Java中如何有效地加载和处理亿级数据,通过不同的方法来实现,并提供实际的案例分析。二:具体说明<1>内存......
  • C语言结构体
    目录结构体含义解释结构的声明结构体变量的创建和初始化结构的特殊声明结构的自引用结构体内存对齐对齐规则例子示范为什么存在内存对齐1.平台原因:2.性能原因:3.总体来说:修改默认对齐数 结构体传参 结构体含义解释1.结构是⼀些值的集合,这些值称为成......
  • 混沌测试工具chaosblade 模拟磁盘 内存 CPU使用率
    一、简介ChaosBlade包含混沌工程实验工具chaosblade和混沌工程平台chaosblade-box。ChaosBlade的github项目地址,ChaosBlade主要包括以下几个组件:ChaosBlade-BoxConsole:ChaosBlade可视化组件,主要提供一套用户友好的Web界面,用户可以通过该界面进行混沌工程实验的编排与操作管......
  • 单元2 Java语言基础
    单元2Java语言基础2.1Java程序结构2.1.1包(package)1.包的作用管理类:防止命名冲突,避免命名冲突控制访问:通过访问控制权限来控制对类、接口、字段、方法的访问组织类:对类进行分类管理2.包的声明(创建)声明包:package包名;导入包:import包名;或import包名.*;......
  • 理解C语言之深入理解指针(一)上
    目录1.内存和地址1.1内存1.2究竟该如何理解编址2.指针变量和地址2.1取地址操作符(&)2.2指针变量和解引⽤操作符(*)2.2.1指针变量2.2.2如何拆解指针类型2.2.3解引⽤操作符2.3指针变量的⼤⼩3.指针变量类型的意义3.1指针的解引⽤3.2指针+-整数3.3void*......
  • 理解C语言之深入理解指针(一)下
    目录5.指针运算5.1指针+-整数5.2指针-指针5.3指针的关系运算6.野指针6.1野指针成因6.2如何规避野指针6.2.1指针初始化6.2.2⼩⼼指针越界6.2.3指针变量不再使⽤时,及时置NULL,指针使⽤之前检查有效性6.2.4避免返回局部变量的地址7.assert断⾔8.指针......
  • 了解 JavaScript 中的高阶组件和高阶函数
    高阶函数高阶函数是一个函数,它要么接受另一个函数作为参数,要么返回一个函数作为结果。这个概念是函数式编程的基础,并允许强大的抽象。示例:functiongreet(name){return`hello,${name}!`;}functionsayhello(fn,name){returnfn(name);}console.log(sayhello(greet,'......
  • JVM内存学习
    java虚拟机在执行程序的过程中会将内存划分为不同的数据区域JVM分为五个区域:虚拟机栈、本地方法栈、方法区、堆、程序计数器。JVM五个区中虚拟机栈、本地方法栈、程序计数器为线程私有,方法区和堆为线程共享区JVM不同区域的占用内存大小不同,一般情况下堆最大,程序计数器较......
  • 【C语言】⾃定义类型:联合和枚举
    ⾃定义类型:联合和枚举1.联合体1.1联合体类型的声明1.2联合体的特点1.3相同成员的结构体和联合体对⽐1.4联合体⼤⼩的计算1.5联合的⼀个练习2.枚举类型2.1枚举类型的声明2.2枚举类型的优点2.3枚举类型的使⽤1.联合体1.1联合体类型的声明像结构体⼀样,联......