gocho a écrit :
...c'est laquelle est la difference entre ma solution et la tienne en dynamique?
oui oui c'est l'etoile je l'ai vu hein! mais ca va changer quoi ?
|
La première fonction reçoit un pointeur sur la structure à remplir => Elle peut donc la remplir mais cela suppose que la fonction appelante s'est occupée de la phase "réservation de la mémoire pour y stocker la structure".
La fonction appelante s'en sert comme ça
...
struct personne toto;
Saisie_Personne(&toto);
... |
ou bien comme ça
...
struct personne *toto;
toto=(struct personne *)malloc(*toto);
if (toto == NULL)
// Traitement de l'allocation mémoire ratée
Saisie_Personne(toto);
... |
La seconde fonction ne reçoit rien => Cela lui impose de tout créer elle-même (s'occuper de toute la phase "allocation mémoire + vérification, remplir, etc).
Une fois qu'elle a créé et remplie la structure, elle renvoie un pointeur sur cette dernière pour que la fonction appelante puisse s'en servir
La fonction appelante s'en sert comme ça
...
struct personne *toto;
toto=Saisie_Personne();
if (toto == NULL)
// Traitement de la saisie ratée
... |
---------------
Vous ne pouvez pas apporter la prospérité au pauvre en la retirant au riche.