정해지지 않은 스트럭트 주소값 반환 못 하나요?

kknd345의 이미지

#include <stdio.h>
#include <stdlib.h>
#include <string.h>


struct Srectangle{
	int length;
	int width;
};

struct Scircle{
	int radius;
}

struct Striangle{
	int side1;
	int side2;
	int side3;
}

int select_menu( void )
{
	char select[30];
	gets(select);

	if( stricmp( select,"rectangle") == 0 )
	{
			
	}
	else if ( stricmp( select,"circle") ==0)
	{

	}
	else if ( stricmp( select,"triangle") ==0)
	{

	}
	else 
	{
		printf("Error Input!\n");
		exit(0);
	}
}

int select_menu( void ) 하수 안에서

if 조건 만족하면 안에 들어가서 malloc 으로 스트럭트만큼 메모리를 만들어
주소값을 리턴하고 싶은데 특정 형태로 정해지지 않은 스트럭트 주소를 리턴할수 있나요?

c++ 은 가능한걸로 아는데..
c는 불가능한가요?

익명 사용자의 이미지

물론 가능합니다.
malloc은 크기만 정해주면 주소를 리턴하지 않습니까? ^^;

doldori의 이미지

할당한 구조체의 주소를 넘기는 것은 쉽게 됩니다만, 문제는 받는 쪽에서는 그 구조체가
세모인지 네모인지 알 수 없다는 것이죠. 각 구조체마다 타입을 구별할 수 있는
멤버를 추가하든지 그런 정보를 알 수 있는 함수 인자를 추가하는 방법이 있습니다.
어떻게 해도 코드가 지저분해지는 것은 피할 수 없겠죠. 관련되는 곳마다 "세모이면 어쩌고...
네모이면 저쩌고..." 하는 것들이 들어가야 할 테니까요.
나중에 오각형 구조체가 추가되어야 하는 상황을 상상해 보십시오. 악몽입니다. :(