길이가 틀린 여러 구조체를 하나의 변수에 주소를 저장하는 방법이 있나요?

coathanger의 이미지

안녕하세요..
아래와 같이 서로 다른 길이를 갖는 구조체 a, b가 있습니다.

struct a
{
int a_a;
};

struct b
{
int b_a;
int b_b;
};

이 구조체들을 하나의 포인터 변수에 주소를 저장 할 수는 없나요?

즉 다시 정리하면...

a, b 구조체의 주소를 p라는 포인터에 저장하고 싶습니다.
p의 타입이 해당 구조체의 타입으로 바껴야 하는데.. 가능한지와 힌트라도 얻고 싶습니다!
물론 각 멤버변수에 접근이 가능해야 합니다.

p = a;
p = b;
p = c;

keizie의 이미지

struct랑 union이랑 섞어서 쓰는 걸 본 것도 같습니다.

coathanger의 이미지

union... 이럴 때 쓰는 군요.. :-)

klenui의 이미지

pointer만을 저장하신다면 void*가 있을테고
union을 쓰신다면 보통은 이런식으로 하는 것 같습니다.

union {
int type;
struct { int type; int data1 } type1;
struct { int type; char* data2 } type2;
} union_data;

if ( union_data.type == type1 )
{
union_data.type1.data1 = .....
}

원하시는 내용이 맞나 모르겠네요..