2010-07-20 4 views
4

C (C++이 아닌) 구조체가 있습니다. 두 개의 문자열을 제외하고 위치, 일부 동작 데이터, 아무 것도없는 게임 엔티티를 제어하는 ​​데 사용됩니다. 구조체는 전역입니다. 객체가 초기화 될 때마다수동으로 변수를 0으로 초기화하는 구조체

는 지금, 나는 그런

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]); 

모든 항목을 0으로 설정하면됩니다.

주의 : 특정 회원이 포인터 인 경우

Nelu Cozac

+0

대체 NULL로 설정 : memset 함수를 (myobjects를 sizeof [인덱스, 0 ​​(myobjects [인덱스])) – nmichaels

관련 문제