关于C的简单问题:复制用户定义的结构类型的变量

j r*_*riv 2 c

这应该很简单.假设我们有一个不提供复制功能的库的结构.是否有一种简单的方法可以将该结构类型的变量复制到相同类型的新变量,而无需为每个子成员执行赋值?或者是否必须制作特殊的复印功能?

AnT*_*AnT 8

那么,结构类型可以在C中赋值:

struct SomeStruct s, d;
...
d = s;
Run Code Online (Sandbox Code Playgroud)

无关紧要,定义它们的位置.而且没有必要复制"每个子成员".你甚至在哪里得到关于成员复制成员的想法?

当然,赋值只会执行浅层复制.如果需要深度复制,则需要库提供的复制例程.如果没有,你将不得不自己实现它.为此,您需要完全了解结构的实际深层记忆组织.如果你不知道它(即如果没有记录),那你就不幸了 - 正确的深层复制是不可能的.

  • @dreamlax:在这种情况下使用`memcpy`的奇怪习惯可能是人们在C代码中看到的最荒谬的事情之一. (2认同)
  • FWIW,这在原始C定义中是不可能的(参考K&R 1978,第6.2章).有许多memcpy遗产.我不知道什么时候加入,也许是C89? (2认同)