手动归零变量VS复制struct

时间:2010-07-20 06:18:39

标签: c struct

我有一个很长的C(不是C ++)结构。它用于控制游戏中的实体,具有位置,一些行为数据,没有任何浮华,除了两个字符串。结构是全局的。

现在,无论何时初始化对象,我都会将所有值一个接一个地放入默认值

myobjects[index].angle = 0; myobjects[index].speed = 0;
像那样。它并不是真的感觉很慢,但我想知道复制一个“模板”结构,并将所有值设置为默认值更快或更方便。

因此,总结为两个正确的问题:复制结构而不是手动设置所有数据是否更快? 关于字符串的malloc-ed内存,我应该记住什么?

2 个答案:

答案 0 :(得分:2)

“更方便”可能是更重要的部分。

struct s vs[...];
...
// initialize every member to "default"
// but can't use in normal assignment
struct s newv = {0};
vs[...] = newv;

或隐藏init-function(或宏,如果你不喜欢可维护代码:)后面的“初始化细节”:

struct s* init_s (struct s* v, ...) { /* and life goes on */ }

答案 1 :(得分:1)

您可以使用以下序列:

memset(myobjects+index,0,sizeof(myobjects[0]);

如果您只需要将所有成员设置为零

注意:如果某个特定成员是指针,它将被设置为NULL

Nelu Cozac