• [C++]数组处理相关函数(memcpy/memset等)


    头文件:string.h或者memory.h

    【1】void *memcpy(void *dest, const void *src, size_t n);//数组元素拷贝
      功能:从源src所指的内存地址的起始位置开始拷贝n个字节到目标dest所指的内存地址的起始位置中

    【2】void *memset(void *s, int ch, size_t n);//重置数组元素与初始化
      功能:将s中当前位置后面的n个字节 (typedef unsigned int size_t )用 ch 替换并返回 s 。
      memset:作用是在一段内存块中填充某个给定的值,它是对较大的结构体或数组进行清零操作的一种最快方法

    #include<iostream>
    #include<string.h>
    using namespace std;
    
    int main(){
        int array_a[12] = {23,45,6,7,4776,834,99954};
        int array_b[12];
    
        memset(array_b, -1, sizeof(array_a)); //将数组b的各元素初始化为-1
    
        memcpy(array_b, array_a+1, sizeof(int)*6);
        for(int i=0;i<12;i++){
            printf("%d ", array_b[i]);
        }
        return 0;
    }
    

    【3】int memcmp(const void *buf1, const void *buf2, unsigned int count);//数组元素比较

      功能:比较内存区域buf1和buf2的前count个字节。注意:按照字节比较的

      返回值:当buf1<buf2时,返回值小于0;当buf1==buf2时,返回值=0;当buf1>buf2时,返回值大于0

    【4】void *memmove( void* dest, const void* src, size_t count );//

      功能:由src所指内存区域复制count个字节到dest所指内存区域。

      memmove用于从src拷贝count个字节到dest,如果目标区域和源区域有重叠的话,memmove能够保证源串在被覆盖之前将重叠区域的字节拷贝到目标区域

      但复制后src内容会被更改。但是当目标区域与源区域没有重叠则和memcpy函数功能相同。

    // memmove.c
    #include <stdio.h>
    #include <string.h>
    
    int main(void){
        char s[]="Golden Global View";
        memmove(s,s+7,strlen(s)+1-7);
        printf("%s",s);
        getchar();
        return 0;
    }
    

    =>output:

      Global View

      

  • 相关阅读:
    【第三章】DI的配置使用(一)
    【第二章】IoC的配置使用(一)
    【第二章】IoC的基础与详解(一)
    【第一章】 Spring概述(二)
    【第一章】 Spring概述(一)
    数据库分库分表思路
    Java的内存模型JVM
    Servlet 单例多线程详细解释
    三极管
    续流二极管
  • 原文地址:https://www.cnblogs.com/johnnyzen/p/9068296.html
Copyright © 2020-2023  润新知