不考虑性能的话,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。
找回自我,歇够了,再飞回来,继续面对自己的人生。