Paso por referencia de una tupla en C/C++

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¡¡¡

  • Share:

Deja un comentario

Your email address will not be published.

Enviar un mensaje




Este sitio web utiliza cookies para que usted tenga la mejor experiencia de usuario. Si continúa navegando está dando su consentimiento para la aceptación de las mencionadas cookies y la aceptación de nuestra política de cookies, pinche el enlace para mayor información.

ACEPTAR
Aviso de cookies