15Fermer17
squalylLe 14/08/2008 à 10:13
bon, vu que t'as la réponse on peut dévier légèrement.

En général on aime pas trop avoir des variables globales. Ce que tu peux faire, c'est déclarer une structure, tout mettre dedans, et passer juste le pointeur de cette structure dans tes fonctions.

struct machin {
	int a;
	int b;
	unsigned short c;
};

void foo(struct machin *données)
{
	données->a=42;
	données->b=53;
	données->c=0x55AA;
}

void bar(struct machin *données)
{
	printf("a=%d b=%d c=%04x",données->a, donnees->b, donnees->c);
}

int _main(void)
{
	struct machin stockage;
	foo(&stockage);
	bar(&stockage);
}

//tout est libéré car c'était dans la pile

//tu peux aussi faire avec la heap
int _main(void)
{
	struct machin *stock;
	stock=(struct machin*)malloc(sizeof(struct machin));
	foo(stockage);
	bar(stockage);
	free(stockage);
}