Vector dinamico por referencia

Antonio
30 de Diciembre del 2009
No entiendo que puedo estar haciendo mal en este codigo para que no se me ejecute bien. Ruego que me orienten por que puede ser:

#include <stdio.h>
#include <stdlib.h>
struct prueba
{
int num;
};
void rellena(struct prueba *vectorprueba)
{
vectorprueba=(struct prueba *)malloc(5*sizeof(struct prueba));
for(int i=0;i<5;i++)
{
vectorprueba[i].num=i;
}
}
int main(void)
{
struct prueba *vectorprueba=NULL;
rellena(vectorprueba);
for(int i=0;i<5;i++)
{
printf("%i\n",vectorprueba[i].num);
}
system("PAUSE");
return 0;
}

Gracias!

David
30 de Diciembre del 2009
Hola, espero ayudarte con esto:

struct prueba
{
int num;
};
void rellena(struct prueba **vectorprueba)
{
*vectorprueba=(struct prueba *)malloc(5*sizeof(struct prueba));
}

int main(void)
{
struct prueba *vectorprueba=NULL;
rellena(&vectorprueba);
for(int i=0;i<5;i++)
{
printf("%i\n",vectorprueba[i].num);
}
system("PAUSE");
return 0;
}

La verdad es que me gustaría saber para que necesitas hacer esto porque es posible que se pueda llevar a cabo de una forma más óptima.

Un saludo!