STRUCTURE ETUDIANT

Signaler
Messages postés
240
Date d'inscription
jeudi 9 janvier 2003
Statut
Membre
Dernière intervention
22 mars 2009
-
Messages postés
21042
Date d'inscription
jeudi 23 janvier 2003
Statut
Modérateur
Dernière intervention
21 août 2019
-
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.

https://codes-sources.commentcamarche.net/source/48586-structure-etudiant

Messages postés
21042
Date d'inscription
jeudi 23 janvier 2003
Statut
Modérateur
Dernière intervention
21 août 2019
29
coucou++
Dans toute autre discipline, on trouve normal de s'instruire devant un bouquin qui à tout coup ne sera pas écrit par un débutant.
En info, un débutant devrait apprendre les erreurs d'un autre débutant, c'est unr complète ineptie.
Messages postés
1910
Date d'inscription
vendredi 18 juin 2004
Statut
Modérateur
Dernière intervention
14 novembre 2014
13
Salut,
C'est vrai coucou747 aucun risque. Un autre problème: il y'a plusieurs malloc() mais pas un seul free().
Messages postés
12303
Date d'inscription
mardi 10 février 2004
Statut
Modérateur
Dernière intervention
30 juillet 2012
40
qu'il le soumette pour s'ameliorer, ok. mais dire que c'est utile aux debutants, c'est exagere...

ta remarque sur les pointeurs tiendrait si c'etait un pointeur vers la pile (return &variable_locale;) ici, c'est un return truc_sur_le_tas, donc c'est sans risque.
Messages postés
2671
Date d'inscription
vendredi 25 janvier 2002
Statut
Membre
Dernière intervention
6 février 2013
2
Salut,
Pour ma part je pense que de publier son code est une bonne chose. Ca permet de le soumettre à un avis plus global et d'en retirer le meilleure.

Une chose qui me "choque" dans ton code concerne l'utilisation des pointeurs.

Exemple :
Etudiant * init_etudiant()
{
Etudiant * e = ....;
[...]

return e;
}

Ta fonction retourne un pointeur qui a été instancié et intialisé dans cette même fonction... Tu ne dois pas faire ca, car ton pointeur est declaré dans ta fonction et de ce fait il n'est valide que dans cette fonction. Tu n'es donc pas sure à 100% du retour de ta fonction.

Pour corriger ce problème, il vaut mieux passer passer un paramètre de sortie à ta fonction... Exemple :

Etudiant * init_saisie(Etudiant * e)
{
if(e != NULL)
{
e->age = 10; // ici tu implémentes ton code
}

return e;
}

=> Dans ce cas précis le retour se fait sur le paramètre de sortie donc aucun soucis pour la suite. Tu peux te servir soit du retour de la fonction soit du paramètre.

Bon courage et n'hésites pas à corriger ton code histoire qu'on t'aide à t'améliroer si tu le désires.

Shell
Afficher les 7 commentaires