写一个memcpy()函数你能拿几分?

不考虑性能的话,memcpy()在C99编译器下可以写为:

void *memcpy(void *restrict dest, const void *restrict src, size_t n)
{
        int i;
        const char *s = src;
        char *d = dest;

        assert(dest && src);
        assert((src + n <= dest) || (dest + n <= src));

        for (i = 0; i < n; i++)
                d[i] = s[i];
        return dest;
}
这里有几个得分点:


这里的几个关键点解释如下:

  1. src指针前面要加const,暗示src是输入参数;
  2. src和dest是非重叠内存,restrict关键字暗示编译器可以优化内存访问的编译;
  3. 断言(assert) src和dest非空,拷贝的源头和目的地非重叠,程序员要理解出错处理和断言的区别;
  4. 返回void *。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值