2010-05-04 5 views
1

On m'a dit d'écrire un programme, qui crée une union et une structure, puis crée des tableaux à deux éléments de syndicats et de structures et remplit leurs champs. J'ai créé un syndicat et une structure, mais comment remplir leurs champs en tableaux?C++ tableaux de syndicats et de structures

#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; 
} 

J'ai essayé un [0] -> i1 = i; mais ce n'est pas la bonne façon de le faire.

+0

Vous n'avez pas besoin d'utiliser new pour créer un tableau. –

Répondre

4

un est un tableau de complex, pas un tableau de pointeurs à complex. Par conséquent, un[0] est un complex, pas un pointeur vers un complex.

Ainsi, vous avez besoin:

un[0].i1 = i; 

L'instance mondiale du type complex appelé u semble un peu inutile, et devrait probablement être retiré.

+0

ok, et disons que je l'ai mis un [0] .i1 = 6; . Comment l'imprimer? J'essayais printf ("i1 $ 2.0d", un [0] .i1); mais ça ne m'imprime rien. – newbDeveloper

+0

il m'imprime correctement les valeurs des champs de structure mais pas d'union. – newbDeveloper

+0

@newbDeveloper: Il est préférable de modifier la question et de copier-coller le code actuel. Cela ressemble à une erreur de formatage, vous devez utiliser "% d" pour imprimer un int, il n'y a pas de $ impliqué. – unwind

Questions connexes