Ver Mensaje Individual
  #8 (permalink)  
Antiguo 17/02/2008, 13:58
athiria
 
Fecha de Ingreso: enero-2008
Mensajes: 22
Antigüedad: 16 años, 10 meses
Puntos: 0
Re: Pasar estructuras por referencia

Dejo aquí un programa que hice, por si a alguien le sirve ^^

Espero que ayude a comprender el paso de estructuras a referencias. He hecho una estructura anidada, y lo he pasado de todos los modos posibles creo :P

Código:
#include <stdio.h>
#define MIEMBROS 5

struct fecha 
{	
	int year;
	int month;
	int day;
};

struct persona
{
	char nombre[20];
	int edad;
	struct fecha birthday;
};	

void LeerDatos(struct persona *yo)
{	
	puts("Nombre");
	scanf("%s",yo->nombre);
	puts("Edad");
	scanf("%d",&yo->edad);
	printf("Año de nacimiento");
	scanf("%d",&yo->birthday.year);
	printf("Mes de nacimiento");
	scanf("%d",&yo->birthday.month);
	printf("Día de nacimiento");
	scanf("%d",&yo->birthday.day);
}

void VerDatos(struct persona yo)
{
	printf("\n%s",yo.nombre);
	printf("\n%d\n",yo.edad);
	printf("%d/%d/%d\n",yo.birthday.day,yo.birthday.month,yo.birthday.year);
	
}

void LeerFamilia (struct persona * familia)
{
	int x;
	for (x=0;x<MIEMBROS;x++)
	{
		puts("Nombre");
		scanf("%s",familia[x].nombre);
		puts("Edad");
		scanf("%d",&familia[x].edad);
		puts("Año de nacimiento");
		scanf("%d",&familia[x].birthday.year);
		puts("Mes de nacimiento");
		scanf("%d",&familia[x].birthday.month);
		puts("Día de nacimiento");
		scanf("%d",&familia[x].birthday.day);						
	}
}

void VerFamilia(struct persona * familia)
{	
	int x;
	for (x=0;x<MIEMBROS;x++)
	{
		puts("Nombre");
		printf("%s\n",familia[x].nombre);
		puts("Edad");
		printf("%d\n",familia[x].edad);
		puts("Año de nacimiento");
		printf("%d\n",familia[x].birthday.year);
		puts("Mes de nacimiento");
		printf("%d\n",familia[x].birthday.month);
		puts("Día de nacimiento");
		printf("%d\n",familia[x].birthday.day);	
	}
}
int main()
{
	struct persona yo;
	
	LeerDatos(&yo);
	VerDatos(yo);
	
	struct persona familia[MIEMBROS];
	
	LeerFamilia(familia);
	VerFamilia(familia);
	
	
	
	return 0;
}