• 17/06/2014
  • admin
  • 0

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

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

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