zoukankan      html  css  js  c++  java
  • memcpy复制整型数组相关

    ————————————————分割线————————————————

    分割线以内的博客转载自:https://blog.csdn.net/qq_38993096/article/details/88377285,侵删

    C语言:#include<string.h>
    C++:#include
    void *memcpy(void *dest, const void *src, size_t n);
    从源src所指的内存地址的起始位置开始拷贝n个字节到目标dest所指的内存地址的起始位置中,是用指针进行操作的。
    注意:
    1.strcpy提供了字符串的复制。即strcpy只用于字符串复制,并且它不仅复制字符串内容之外,还会复制字符串的结束符。
    2.memcpy提供了一般内存的复制。即memcpy对于需要复制的内容没有限制,因此用途更广。

    strcpy和memcpy主要有以下3方面的区别:
    1、复制的内容不同。strcpy只能复制字符串,而memcpy可以复制任意内容,例如字符数组、整型、结构体、类等。
    2、复制的方法不同。strcpy不需要指定长度,它遇到被复制字符的串结束符""才结束,所以容易溢出。memcpy则是根据其第3个参数决定复制的长度。
    3、用途不同。通常在复制字符串时用strcpy,而需要复制其他类型数据时则一般用memcpy
    ————————————————
    版权声明:本文为CSDN博主「fjghgsrfdhbrs」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
    原文链接:https://blog.csdn.net/qq_38993096/java/article/details/88377285

    memcpy(d,s+12,4);//从第13个字符(V)开始复制,连续复制4个字符(View)到s
    d[4]='';//必须有这句,不然字符串会乱码
    //memcpy(d,s+12*sizeof(char),4*sizeof(char));也可

    函数源码:

    void *memcpy(void *dest, const void *src, int count)
    {
        void *ptr = dest;
        if (NULL == dest || NULL == src || count <= 0)
        {
            return NULL;
        }
        while (count--)
        *(char *)dest++ = *(char *)src++;
        return ptr;
    }

    ————————————————分割线————————————————

    补充整型数组复制相关:

    整型数组复制的时候,第三个参数应该为sizeof(int) * size    (同理会有sizeof(long int) * size, sizeof(Node) * size...)

    在memcpy的源码中可以看到,复制是以char为地址单元进行的,所以第三个参数只传进size的话,那么将会只复制前size个char地址单元的数据。

    int main()
    {
        int a[4] = {1, 2, 3, 100};
        int b[3] = {4, 5, 6};
        memcpy(b, a, 4); // 通常int = 4 * char, 所以复制的结果为b = {1, 5, 6}, 只复制了前4个char地址的内容
        memcpy(b, a, sizeof(int) * 3); // 这里的sizeof(int) * 3 == 12, 所以复制结果为b = {1, 2, 3};
        for (int i = 0; i < 3; i++) {
            printf("%d ", b[i]);
        }
        return 0;
    }
  • 相关阅读:
    iOS 关于字体根据不同屏幕尺寸等比适配的问题(zz)
    安卓开发:一种快速提取安卓app的UI图标资源的方法
    申请邓白氏编码的时候总是提示 Enter a valid Street Address 怎么办?
    利用日期、经纬度求日出日落时间 C语言程序代码(zz)
    JS导出Excel 代码笔记
    Bootstrap系列 -- 44. 分页导航
    Bootstrap系列 -- 43. 固定导航条
    Bootstrap系列 -- 42. 导航条中的按钮、文本和链接
    Bootstrap系列 -- 41. 带表单的导航条
    Bootstrap系列 -- 40. 导航条二级菜单
  • 原文地址:https://www.cnblogs.com/myxdashuaige/p/13258611.html
Copyright © 2011-2022 走看看