Código (cpp) [Seleccionar]
#include <stdio.h>
typedef struct Vagon{
int numero;
int peso;
char *carga;
}vagon;
typedef struct Tren{
vagon *v;
}tren;
int main(){
int nvagones=10;
tren *p=(tren *)malloc(sizeof(tren));
p->v =(vagon *)malloc(nvagones*sizeof(vagon));
return 0;
}
Estoy aprendiendo punteros y este ejemplo trata de hacer trenes con muchos vagones. En el ejemplo con 1 solo tren luego reservo memoria para 10 vagones. Lo que pasa es que no se acceder luego a cada vagon porque p->v[2]->numero=1; por ejemplo no funciona y no entiendo porque. ¿Alguien me explica?
Dejo el code de ejemplo por si a alguien le sirve de algo:
Código (cpp) [Seleccionar]
#include <stdio.h>
typedef struct Vagon{
int numero;
int peso;
char *carga;
}vagon;
typedef struct Tren{
vagon *v;
}tren;
char cargas[4][25]={"MADERA","PAN","HIERRO","ALIMENTOS"};
int main(){
srand(time(NULL));
int nvagones=10;
int i;
tren *p=(tren *)malloc(sizeof(tren));
p->v =(vagon *)malloc(nvagones*sizeof(vagon));
for(i=0;i<nvagones;i++){
p->v[i].numero=i+1;
p->v[i].peso = 500+(rand()%1500);
p->v[i].carga =cargas[rand()%4];
}
for(i=0;i<nvagones;i++){
printf("Numero: %d\n",p->v[i].numero);
printf("\tPeso: %dKg",p->v[i].peso);
printf("\tCarga: %s\n",p->v[i].carga);
}
return 0;
}