从memcpy()函数中学习函数的设计思想

memcpy()函数:可以理解为内存拷贝。

他的函数定义如下的 my_memcpy()函数相同。

下面这个函数是我的模拟实现,现在让我们一起来学习一下这个函数的设计思想:

void * my_memcpy(void * des, const void* src, size_t size)
{
    void * p = des;
    while (size)
    {
        *((char* )des) = *((char *)src); 
        des++;
        src++;
        size--;
    }
    return p;
}

1.形式参数和返回值使用泛型指针:

我们想象我们自己如果是函数的设计者,我们并不能知晓用户使用我们的函数复制什么类型的数据,所以我们不能知晓用什么形式参数和返回值类型,既然如此,我们就可以使用泛型指针,最后用户自己用来复制什么类型的数据由它自己选择,这样我们的函数就可以做到通用了。

2.利用char* 类型的指针实现通用拷贝:

当设计复制操作的时候我们遇到了同样的问题,那就是我们不知道用户使用它复制什么类型的数据,既然如此我们干脆加一个形式参数,让用户自己告诉我们需要拷贝多少字节的数据,我们不需要知道这是一些什么类型的数据我们只需要将这些数据一个字节一个字节的拷贝到另一个地方,所以要做到每次只操作一个字节我们自然想到了char*的指针。

总结来说,如果想要设计一个函数,一定要想好它的通用性和安全性,我们可以充分借助c语言中的各种特性来完成我们丰富的想法。

  • 13
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值