我试着在C中编写像"memcpy“这样的函数,将一块数据从源地址复制到目的地址。
在*dst_addr++ = *src_addr++;行中,出现错误:"invalid use of void expression“
我写的函数:
void MemCpy(void *src_addr, void *dst_addr, int length)
{
while(length--)
{
// copy by single byte
*dst_addr++ = *src_addr++;
}
return dst_addr;
}如果以后需要的话,我使用void来指向任何对象类型。
为什么我用错了"void“这个词?有人能解释一下我的错误吗?
发布于 2021-09-08 07:42:25
您的代码中有两个问题:
没有大小,您不能取消引用void指针,也不能对它们执行指针算术运算您在
*正确的代码:
void *MemCpy(void *src_addr, const void *dst_addr, size_t length)
{
const char *s = src_addr;
char *d = dst_addr;
while (length--)
*d++ = *s++;
return dst_addr;
}顺便说一下,在原始memcpy中,第一个参数是目标指针,因此您的MemCpy函数与原始memcpy不完全相同。
https://stackoverflow.com/questions/69098728
复制相似问题