Retour de fonction en langage C.
Résolu
bernard
-
amateurb Messages postés 2 Date d'inscription Statut Membre Dernière intervention -
amateurb Messages postés 2 Date d'inscription Statut Membre Dernière intervention -
Bonjour,
Voilà la fonction.
Ellle initialise A[][] avec des valeurs aléatoires.
Je peux l'utiliser comme cela .
while(!det_R(R_mR(P,n))); /* inversibles */
ou comme cela.
R_mR(P,n);
Dans le deuxième cas le retour de la fonction n'est pas utilisé.
Erreur de programmation ?
Merci
Voilà la fonction.
Ellle initialise A[][] avec des valeurs aléatoires.
/* ------------------------------------ */ double **R_mR( double **A, int n ) { int r; int c; for (r=FIRST; r<A[R_SIZE][OF]; r++) for (c=FIRST; c<A[C_SIZE][OF]; c++) A[r][c] = r_I(n); return(A); }
Je peux l'utiliser comme cela .
while(!det_R(R_mR(P,n))); /* inversibles */
ou comme cela.
R_mR(P,n);
Dans le deuxième cas le retour de la fonction n'est pas utilisé.
Erreur de programmation ?
Merci
A voir également:
- Retour de fonction en langage C.
- Fonction si et - Guide
- Langage ascii - Guide
- Langage binaire - Guide
- Retour à la ligne excel formule - Guide
- Fonction miroir - Guide
5 réponses
Je pense que c'est parce que tu ne récupères pas la valeur de sortie, il faut que tu mettes une variable devant à qui tu assignes la valeur retournée
Salut,
Je n'ai pas regardé en détail l'algorithme de la fonction, mais non il n'y a pas d'erreur de programmation a priori.
Tu récupères déjà la modification de la matrice en paramètre. Tu la récupères aussi en return. La valeur du return peut-être très pratique pour regarder si le retour vaut NULL ou pas.
Mais dans ton cas, il n'y a pas de souci, R_mR(P,n); modifiera ta matrice P.
Je n'ai pas regardé en détail l'algorithme de la fonction, mais non il n'y a pas d'erreur de programmation a priori.
Tu récupères déjà la modification de la matrice en paramètre. Tu la récupères aussi en return. La valeur du return peut-être très pratique pour regarder si le retour vaut NULL ou pas.
Mais dans ton cas, il n'y a pas de souci, R_mR(P,n); modifiera ta matrice P.
Non, aucun souci, mais aucun intéret.
Si tu fait Q=R_mR(P,n), P sera initialis et Q aussi, mais se seront les même variable. ça reviens à faire:
R_mR(P,n);Q=P;
Si tu fait Q=R_mR(P,n), P sera initialis et Q aussi, mais se seront les même variable. ça reviens à faire:
R_mR(P,n);Q=P;
Salut,
Oui tu peux le faire sans souci. Mais l'intérêt de cette méthode n'est pas d'avoir la double possibilité mais de renvoyer un code d'erreur en cas de problèmes internes à la fonction. Donc cette méthode est bien approprié pour les pointeurs où le code erreur sera NULL, éventuellement en définissant errno. Mais pour les fonctions qui renvoie juste une valeur et non un pointeur, là l'intérêt est moindre. Si tu veux un code erreur, tu renvoies 1 par exemple et 0 en cas de succès.
Mais pour une fonction simple où il n'y a pas lieu d'y avoir d'erreurs, le plus commode est de renvoyer bêtement la valeur en return.
Cdlt
Oui tu peux le faire sans souci. Mais l'intérêt de cette méthode n'est pas d'avoir la double possibilité mais de renvoyer un code d'erreur en cas de problèmes internes à la fonction. Donc cette méthode est bien approprié pour les pointeurs où le code erreur sera NULL, éventuellement en définissant errno. Mais pour les fonctions qui renvoie juste une valeur et non un pointeur, là l'intérêt est moindre. Si tu veux un code erreur, tu renvoies 1 par exemple et 0 en cas de succès.
Mais pour une fonction simple où il n'y a pas lieu d'y avoir d'erreurs, le plus commode est de renvoyer bêtement la valeur en return.
Cdlt
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question