2014-02-18 2 views
0

함수가 공용체의 멤버를 반환 할 수 있습니까?반환 값으로 유니온 멤버

그렇다면 함수의 반환 형식을 어떻게 선언해야하며 어떻게 함수 정의에서 return 문을 만들 수 있습니까?

노동 조합의 회원이있다

+1

유니온의 멤버는 변수 일뿐입니다 구조체의 멤버가 그렇듯이. – Sneftel

+2

당신의 조합원이 int 인 경우 int를 반환합니다. – dutt

+0

죄송합니다. 현재 코드를 사용할 수 없습니다. 사실, 두 멤버가있는 공용체가 필요합니다. 하나는 함수의 "정상"반환 값이고 다른 하나는 함수가 반환하지 않으려는 값입니다. 함수가 실패하면 반환합니다. 원하는 작업을하십시오. 예를 들어 변수에 메모리를 할당하면 함수는 해당 변수에 대한 포인터를 반환하고 그렇지 않으면 false를 반환합니다. – user3257624

답변

5

번호 (사실,이에 대한 일련의 질문을 가지고 있지만 그들 중 누구도 이전 대답하지 않으면 의미가 없다. 그래서이 처음입니다 ...) 목적. 함수는 값만 반환 할 수 있습니다.

유니온 멤버의 값인 값을 반환 할 수 있습니다. 이렇게하려면 함수의 반환 형식은 단순히 구성원의 형식입니다.

함수는 값으로 전체 공용체를 반환 할 수 있습니다. 이렇게하려면 함수의 반환 형식이 공용 형식이어야합니다.

함수는 호출자에게 현재 사용중인 공용체의 멤버를 나타내는 값을 반환 할 수 있습니다 (예 : 첫 번째 멤버의 경우 0, 두 번째 멤버의 경우 1). 이렇게하려면 함수의 반환 형식은 정보를 인코딩하기 위해 선택한 형식입니다 (예 : int).

함수는 포인터를 반환 할 수도 있습니다. 이들은 종종 객체의 프록시로 사용됩니다. 실제 객체를 반환 할 수 없기 때문에 객체에 대한 포인터를 반환하고 호출자는 포인터를 사용하여 객체에 액세스 할 수 있습니다. 함수는 공용 구조체 멤버 또는 공용 구조체에 대한 포인터를 반환 할 수 있습니다. (문제가 될 수 있습니다 : 포인터가 반환하는 객체는 함수가 반환 된 후에도 계속 존재하는 객체 여야하므로 함수 내에 만들어진 자동 객체가 아니어야합니다.)

+0

나는 그것을 얻었다. 그런 다음 공용체의 태그 필드에 대한 열거 형을 사용하여 반환 유형을 확인할 수 있습니까? 하지만, 예를 들어 "정품"값 또는 void (함수의 인수에 대한 depenting)를 반환하는 함수가 필요하다면이를 달성 할 수있는 방법이 있습니까? – user3257624

+0

@ user32576424 : 함수가 일부 값 * x * 또는 무효 값 "void"를 반환하도록하려면 원하는 모든 값 * x * 및 "void"를 나타낼 수있는 유형이 있어야합니다 (예 : 포인터가 실제 객체와 NULL에 대한 포인터와 부동 소수점 값은 모두 숫자와 NaN [Not a Number]를 나타낼 수 있습니다. 때로는 "무효"를 나타내는 특수 값을 따로 설정하면됩니다. 예를 들어, 함수가 적절한 결과에 대해 음수 값을 반환하지 않으면 -1이 "무효"를 의미 할 수 있습니다. –

+1

@ user3257624 : 기본 유형이 만족스럽지 않으면 두 멤버가있는 구조체를 정의 할 수 있습니다. 그 중 하나는 반환 값이 "void"인지 아닌지와 다른 하나는 실제 반환 값을가집니다. –

관련 문제