En nuestro artículo de hoy os mostraremos como pasar por referencia un tupla en c/c++
Sea la tupla t_trol:
typedef struct trol{
int x,y;
int color;
}t_trol;
Se puede tener una función de inicialización con un puntero de tipo t_trol* como parámetro:
void init(t_trol*p)
{
p->x=rand()%800;
p->y=rand()%600;
p->color=rand()%256;
}
Y en alguna parte, la llamada:
t_trol t;
init(&t); // paso de la dirección de la struct t_trol
En el caso de la tabla de punteros, no hay que olvidar asignar los punteros. En efecto, si se escribe por ejemplo:
t_trol* ALL[10];
int i;
for (i=0; i<10; i++){
init(ALL[i]); // ¡ERROR! ALL[i] NO ASIGNADO
}
provoca un error de ejecución, ALL[i] no tiene una dirección de memoria reservada. Por lo tanto, hay que añadir previamente la asignación de memoria (sea en el mismo sitio, o en cualquier otra parte en el programa):
for (i=0; i<10; i++){
ALL[i]=(t_trol*)malloc(sizeof(t_trol));
init(ALL[i]); // OK, ALL[i] ASIGNADO
}
Espero que este artículo te sea de utilidad o que simplemente te haya gustado, si es así compártenos¡¡¡