首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >“无效使用void表达式”:将数据从addr %1复制到addr %2

“无效使用void表达式”:将数据从addr %1复制到addr %2
EN

Stack Overflow用户
提问于 2021-09-08 07:29:43
回答 2查看 56关注 0票数 1

我试着在C中编写像"memcpy“这样的函数,将一块数据从源地址复制到目的地址。

*dst_addr++ = *src_addr++;行中,出现错误:"invalid use of void expression“

我写的函数:

代码语言:javascript
复制
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“这个词?有人能解释一下我的错误吗?

EN

Stack Overflow用户

发布于 2021-09-08 07:42:25

您的代码中有两个问题:

没有大小,您不能取消引用void指针,也不能对它们执行指针算术运算您在

  • 中忘记了*

正确的代码:

代码语言:javascript
复制
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不完全相同。

票数 1
EN
查看全部 2 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/69098728

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档