Retour de fonction en langage C.
Résolu
bernard
-
amateurb Messages postés 2 Statut Membre -
amateurb Messages postés 2 Statut Membre -
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 - 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