struct 멤버를 default값으로 초기화할 수 있나요?

moonzoo의 이미지

예를 들어 다음과 같은 구조체가 있다고 할때.

typedef struct
{
	char school[128];
	char name[64];
	char id[32];
}MEMBER;

위와 같은 MEMBER구조체에서 school의 값을

항상 "test"로 초기화할 방법이 있나요?

cinsk의 이미지

초기값을 주는 것 이외에는 특별한 방도는 없을 것 같습니다.

#define MEMBER_DEFAULT  { "test", "", "" }

처럼 정의하시고 쓰시는 것이 어떨까 합니다.
익명 사용자의 이미지

C컴파일러만을 사용해야하는게 아니라면 생성자를 만들어주셔도 될거 같은데요. 근데 솔직히 c에서는 어떻게 되는지 모르겠군요 -_-;;

struct MEMBER
{
    ....
    MEMBER();
};
익명 사용자의 이미지

C++에서 도입된 Class 부터입니당

doldori의 이미지

자동 또는 정적 변수일 때는 매크로로 그럭저럭 되겠지만 동적 할당을 할 경우에는
방법이 없겠는데요. C++의 생성자만이 완벽한 해결책이겠네요.

익명 사용자의 이미지

님이

typedef struct
{
char school[128];
char name[64];
char id[32];
}MEMBER;

한거는 오로지 변수형의 선언을 한것일뿐입니다..즉 이런 변수형태가 있다라는것을 정의할 뿐이기 때문에 변수형에 값을 대입하는건 있을수가 없는 일입니다.

단,변수(변수형이 아님)를 선언할경우에는 초기화가 가능합니다.

자칫 착각을 하지 않았는지 생각해 보시기 바랍니다.:-)

익명 사용자의 이미지

그리고

typedef를 사용하지 않는다면

struct xxxx{
....
}xxxx_t={};

이런형태로 변수선언과 초기화가 가능합니다.