2010-07-20 33 views
4

我有一個很長的C(而不是C++)結構。它用於控制遊戲中的實體,包含位置,一些行爲數據,除了兩個字符串以外沒有任何浮華。該結構是全局的。手動調零變量VS複製struct

眼下,當一個對象被初始化,我把所有的爲默認值,逐個

myobjects[index].angle = 0; myobjects[index].speed = 0; 

這樣。它並不真的感覺很慢,但我想知道是否將所有設置爲默認值的「模板」結構複製得更快或更方便。

因此,總結成兩個適當的問題:複製結構而不是手動設置所有數據的速度更快嗎? 關於字符串的malloc-ed內存,我應該記住什麼?

回答

2

「更方便」可能是更重要的部分。

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

或隱藏「初始化方式」,一個初始化函數後面(或宏,如果你不喜歡維護的代碼:-)

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

你可以使用這個序列:

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

如果您只需要將所有成員設置爲零

請注意:如果某個特定成員是指針,它將被設置爲NULL

Nelu Cozac

+0

備選:memset的(&myobjects [指數],0,的sizeof(myobjects [指數])) – nmichaels 2010-07-20 15:34:33