zoukankan      html  css  js  c++  java
  • C语言字符串字节数组拷贝memmove,memcpy函数地址偏移使用

    C 库函数 void *memmove(void *dest, const void *src, size_t n) 从 src复制 n 个字符到 dest

    C 库函数 void *memcpy(void *dest, const void *src, size_t n) 从存储区 src复制 n 个字节到存储区 dest

    但是在重叠内存块这方面,memmove() 是比 memcpy() 更安全的方法。

    如果目标区域和源区域有重叠的话,memmove() 能够保证源串在被覆盖之前将重叠区域的字节拷贝到目标区域中,复制后源区域的内容会被更改。

    如果目标区域与源区域没有重叠,则和 memcpy() 函数功能相同。

    #include <stdio.h>
    #include <stdlib.h>
    #include <string.h> 
    int main(){
        const char dest[] = "1234567890";
        const char src[]  = "abcdefghij";
        printf("处理之前 dest = %s, src = %s
    ", dest, src);
        memmove(dest, src, 3);
        printf("直接处理 dest = %s, src = %s
    ", dest, src);
        memmove(dest+4, ((char * )src)+3, 3);
        printf("偏移处理 dest = %s, src = %s
    ", dest, src);
        return 0;
    }

    目标dest类型可以是 cahr[] ,也可以是char * ,可以直接使用偏移,

    源src参数类型必须是 char *,如果不是需要先转换后再使用偏移。

  • 相关阅读:
    Vue自定义指令 directive
    Vue过滤器 filters
    贪心
    家庭作业
    线段
    数列极差
    shell
    智力大冲浪
    加工生产调度
    喷水装置
  • 原文地址:https://www.cnblogs.com/vonly/p/14041975.html
Copyright © 2011-2022 走看看