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

来源:互联网 发布:医疗器械软件测试报告 编辑:程序博客网 时间:2024/05/07 00:02

不考虑性能的话,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 *。
1 0
原创粉丝点击