【发布时间】:2015-01-14 20:25:35
【问题描述】:
我正在尝试获取我自己的 memcpy 版本,以将字符数组从一个指针复制到另一个指针。但是,这会产生错误。 printf 好像有问题。
其次,官方的memcpy函数返回目标指针。这真的需要吗?如果我修改 *dest,无论如何它都应该反映在 *d 中。那么有什么必要退货呢?
#include <stdio.h>
void memcpy2(void *dest, const void *src, size_t n)
{
char *dp = dest;
const char *sp = src;
while (n--)
*dp++ = *sp++;
}
int main(void) {
char *c = "Hello";
char *d=NULL;
memcpy2(d,c,3);
printf( "%c", *d);
return 0;
}
【问题讨论】:
-
memcpy 是一个系统函数。系统功能总是需要一种方法来指示成功/失败。系统函数需要有一致的接口,包括返回值。对于 memcpy,成功返回目标地址或失败返回 NULL 是系统函数与其余系统函数保持一致的方式