写一个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;}这里有几个得分点:

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

src指针前面要加const,暗示src是输入参数;

src和dest是非重叠内存,restrict关键字暗示编译器可以优化内存访问的编译;

断言(assert) src和dest非空,拷贝的源头和目的地非重叠,程序员要理解出错处理和断言的区别;

返回void *。

最后的一个拷贝的for循环全部做对,本题得分为0。

找回自我,歇够了,再飞回来,继续面对自己的人生。

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

相关文章:

你感兴趣的文章:

标签云: