2010-05-04 2 views
1

유니온과 구조체를 만드는 프로그램을 작성한 다음 유니온과 구조체의 두 요소 배열을 만들고 필드를 채 웁니다. 나는 유니온과 구조체를 만들었지 만 배열로 필드를 채우는 방법은 무엇입니까?C++ 유니온과 구조체 테이블

#include <iostream> 
#include <stdlib.h> 
#include <stdio.h> 
using namespace std; 

union complex; 

union complex{ 
     int i1; 
     long double ld1; 
     } u; 

struct Person { 
    char* name; 
    int age; 
    bool sex; 
    void show(){ 
    printf("name %s, age %2.0d, sex %1d\n", 
     name , age, sex);   
    }; 
} person; 

int main(void) 
{ 

    Person *o = new Person[2]; 
    complex *un = new complex[2]; 

    un[0]->i1=i; 

    system("pause"); 
    return 0; 
} 

나는 [0] -> i1 = i; 그러나 이것을하는 적절한 방법이 아닙니다.

+0

새 배열을 만들 필요가 없습니다. –

답변

4

uncomplex에 대한 포인터 배열이 아닌 complex의 배열입니다. 따라서 un[0]complex에 대한 포인터가 아닌 complex입니다.

따라서, 다음이 필요합니다 유형 complex

un[0].i1 = i; 

글로벌 인스턴스는 u 조금 무의미 보인다라고, 아마 제거해야합니다.

+0

좋아, 내가 un [0] .i1 = 6으로 설정했다고 가정 해 봅시다. . 어떻게 인쇄합니까? printf ("i1 $ 2.0d", un [0] .i1)를 사용하려고했습니다. 하지만 아무것도 인쇄하지 않습니다. – newbDeveloper

+0

구조체 필드는 올바르게 값을 출력하지만 공용체는 출력하지 않습니다. – newbDeveloper

+0

@newbDeveloper : 질문을 편집하고 실제 코드를 복사하여 붙여 넣는 것이 가장 좋습니다. 형식화 문자열 오류처럼 보입니다. "% d"을 사용하여 int를 인쇄해야하며 $ 관련이 없습니다. – unwind