2010-07-20 2 views
4

У меня длинная структура C (не C++). Он используется для управления объектами в игре, с позицией, некоторыми данными о поведении, ничем не кричащими, кроме двух строк. Структура является глобальной.Переменные в ручном порядке VS-копирование структуры

Прямо сейчас, когда объект инициализируется, я кладу все значения по умолчанию, по одному

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

Нелу Cozac

+0

Альтернатива: MemSet (& myobjects [индекс], 0, SizeOf (myobjects [индекс])) – nmichaels

Смежные вопросы