【发布时间】:2018-05-29 10:38:01
【问题描述】:
您好,谁能解释一下为什么这个 memcpy 函数不起作用?
void *ft_memcpy(void *dst, const void *src, size_t n)
{
while (n--)
*(char *)dst++ = *(char *)src++;
return (dst);
}
【问题讨论】:
-
这在哪些方面“不起作用”?
-
@andreee 实际上它正在返回一个空指针
-
您的
dst++和src++构成了void *上的指针运算,这是非标准的,尽管 GNU gcc 作为扩展支持。 -
您是否注意到零是
size_t类型的合法值...? -
两个问题:它不是有效的 C,因为 ++ 的优先级高于强制转换,并且您不能在 void 指针上使用 ++。此外,您需要返回指向数据开头的指针,而不是结尾。
标签: c memory-management memcpy