Retour de fonction en langage C.

Résolu
bernard -  
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.

/* ------------------------------------ */
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:

5 réponses

NookZ Messages postés 2138 Date d'inscription   Statut Membre Dernière intervention   514
 
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
0
fiddy Messages postés 11069 Date d'inscription   Statut Contributeur Dernière intervention   1 846
 
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.
0
amateurb Messages postés 2 Date d'inscription   Statut Membre Dernière intervention  
 
Bonjour,

Merci NookZ, fiddy.

Mon idée est de faire la même chose avec toutes mes fonctions.

add, mul, ...

Pour avoir la double possibilitée.

Cela pourait il être un problème ?

Merci
0
Char Snipeur Messages postés 9813 Date d'inscription   Statut Contributeur Dernière intervention   1 299
 
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;
0
fiddy Messages postés 11069 Date d'inscription   Statut Contributeur Dernière intervention   1 846
 
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
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
amateurb Messages postés 2 Date d'inscription   Statut Membre Dernière intervention  
 
Merci à tout le monde.

Je pense que mon problème est résolu

Merci
0