当前位置: 首页> 财经> 访谈 > 中国建设银行官网开户行查询_信息流推广的竞价机制是_网销平台排名_网站域名购买

中国建设银行官网开户行查询_信息流推广的竞价机制是_网销平台排名_网站域名购买

时间:2025/7/12 5:07:31来源:https://blog.csdn.net/2401_86861045/article/details/143897791 浏览次数:1次
中国建设银行官网开户行查询_信息流推广的竞价机制是_网销平台排名_网站域名购买

一、memcpy函数

1、memcpy函数的使用

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

        函数 memcpy 从 source 的位置开始向后复制 num 个字节的数据到 destination 指向的内存位置;
        这个函数在遇到 ' \0' 的时候并不会停下来;
        如果 source 和 destination 有任何的重叠,复制的结果都是未定义的。所以通常使用memcpy函数拷贝不重叠内存的数据;(对于重叠的内存,交给memmove来处理)

        函数memcpy只关注要拷贝的数据在哪里,要存放到哪里,拷贝几个字节,至于内存中存放的是什么类型的数据,并不重要。

2、memcpy函数的模拟实现

#include<stdio.h>
#include<assert.h>
void* my_memcpy(void* des, const void* src, size_t num);
int main()
{
    char str1[20];
    char str2[] = "hello world!";
    printf(my_memcpy(str1, str2, 5 * sizeof(str2[0])));
    return 0;
}
void* my_memcpy(void* des, const void* src, size_t num)
{
    assert(des);
    assert(src);
    void* res = des;
    while (num)
    {
        *(char*)des = *(char*)src;
        ((char*)des)++;
        ((char*)src)++;
        num--;
    }
    *(char*)des = '\0';
    return res;
}

二、memmove函数

1、memmove函数的使用

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

        memmove和 memcpy 的差别就是 memmove 函数处理的源内存块和目标内存块是可以重叠的。
        如果源空间和目标空间出现重叠,就得使用 memmove 函数处理。

2、memmove函数的模拟实现

#include<stdio.h>
#include<assert.h>
void* my_memmove(void* des, const void* src, size_t num);
int main()
{
    int arr[] = { 1,2,3,4,5,6,7,8,9,10 };
    my_memmove(arr + 2, arr, 5 * sizeof(arr[0]));
    for (int i = 0; i < 10; i++)
    {
        printf("%d ", arr[i]);
    }
    return 0;
}
void* my_memmove(void* des, const void* src, size_t num)
{
    assert(des);
    assert(src);
    void* res = des;
    if (des <= src || (char*)des + num <= (char*)src)
    {
        while (num)
        {
            *(char*)des = *(char*)src;
            ((char*)des)++;
            ((char*)src)++;
            num--;
        }
    }
    else
    {
        (char*)des = (char*)des + num - 1;
        (char*)src = (char*)src + num - 1;
        while (num)
        {
            *(char*)des = *(char*)src;
            ((char*)des)--;
            ((char*)src)--;
            num--;
        }
    }
    return res;
}

三、memset函数

1、memset函数的使用

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

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

四、memcmp函数

1、memcmp函数的使用       

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

        比较从 ptr1 和 ptr2 指针指向的位置开始,向后的 num 个字节
        返回值如下:

returnindicates
<0在两个内存块中不匹配的第一个字节,在 ptr1 中的值低于在 ptr2 中的值。(在作为无符号字符值进行评估时)
0两个内存块的内容相等。
>0在两个内存块中不匹配的第一个字节,在 ptr1 中的值高于在 ptr2 中的值。(在作为无符号字符值进行评估时)

关键字:中国建设银行官网开户行查询_信息流推广的竞价机制是_网销平台排名_网站域名购买

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

责任编辑: