memcpy表示怀疑。需要澄清

memcpy表示怀疑。需要澄清,c,memcpy,C,Memcpy,我得到了一个memcpy函数,它的使用方式看起来很奇怪。我把它贴在下面。谁能帮我解释一下吗。我不知道为什么(void*)。缓冲区是struct BLK中的缓冲区。谢谢 memcpy( (void *) (BLK->buffer + left), (void *) input, fill ); 假设input和BLK->buffer已

我得到了一个memcpy函数,它的使用方式看起来很奇怪。我把它贴在下面。谁能帮我解释一下吗。我不知道为什么(void*)。缓冲区是struct BLK中的缓冲区。谢谢

    memcpy(     
                (void *) (BLK->buffer + left),
                (void *) input,
                fill            
          );

假设
input
BLK->buffer
已经是指针类型(它们确实应该是指针类型),则不需要强制转换

我能想到它们出现的两个原因:

  • 作者是偏执狂
  • 作者明确表示,他/她理解特定指针类型将进入“通用”函数
可能是作者希望非常确定编译器在执行其工作时不会出错:-)

在C语言中,不需要从void*或向void*投射对象指针。
指向函数的指针是另一回事。

如果它们不是指针,那么几乎肯定是做错了什么。在这种情况下,演员会隐藏问题。额外的子弹:作者被C++、微软和/或Health-SHILLDT混淆。或者作者如此健忘,以至于他没有意识到他在C++编译器上编译了C++代码。这是C++无用的另一个方向。
void *memcpy(void *dest, const void *src, size_t n);