我有一个很长的C(不是C ++)结构。它用于控制游戏中的实体,具有位置,一些行为数据,没有任何浮华,除了两个字符串。结构是全局的。
现在,无论何时初始化对象,我都会将所有值一个接一个地放入默认值
myobjects[index].angle = 0; myobjects[index].speed = 0;
像那样。它并不是真的感觉很慢,但我想知道复制一个“模板”结构,并将所有值设置为默认值更快或更方便。
因此,总结为两个正确的问题:复制结构而不是手动设置所有数据是否更快? 关于字符串的malloc-ed内存,我应该记住什么?
答案 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