Aide sur pointeur

sweetwink Messages postés 91 Statut Membre -  
sweetwink Messages postés 91 Statut Membre -
Bonjour, le but de cet exercice est de trouver X,Y,Z le jeu de fonction ne me laisse pas avoir un résultat satisfaisant .merci de m'avoir aider a trouver ces variables qui changent en fonction du pointeur.

int main

int F2 (int A, int * B, int * C);
void F3 (int K, int L, int * M);

int main ( )
{ int X, Y, Z;
X= 4; Y = 3; Z = 14;
X = F2 (X, &Y, &Z);
return (0);
}

int F2 (int A, int * B, int * C)
{
*C = 3;
F3 (A, *B, C);
A = 3;
return (5);
}

void F3 (int K, int L, int * M)
{
K = 2;
L = 9;
*M = K + L;
}
Réponse : X = … Y = … Z = …

2 réponses

loupius
 
Je ne comprends pas la finalité de ce programme.
A moins que quelque chose m'échappe, le résultat est prévisible, à savoir:
X = 5, Y = 3, Z = 11.
Comment en suis-je arrivé là? Le programme aussi d'ailleurs.
- X=5, évident puisque la fonction F2 retourne toujours 5 et comme X = F2...
- Y=3, n'est pas modifié puisque, bien qu'étant passé par adresse à F2, F2 ne modifie pas B puisque B est passé par valeur à F3 et ne peut donc être modifié.
- Z=11, dans F3 la valeur pointée par M sera 11 (9+2), cette valeur est retournée à F2 donc la valeur pointée par C sera 11 (il ne sert d'ailleurs à rien de l'initialiser avec 3), cette valeur est retournée au main, donc la valeur pointée par Z sera 11 (il ne sert d'ailleurs à rien de l'initialiser avec 14).
Le programme pourrait d'ailleurs être ainsi simplifié:
int  F2 (int * C);
void F3 (int * M);

int main ()
{
        int X, Y = 3, Z;
        X = F2 (&Z);
        return (0);
}

int F2 (int * C)
{
        F3 (C);
        return (5);
}

void F3 (int * M)
{
        *M = 11;
}
0
sweetwink Messages postés 91 Statut Membre 6
 
merciiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii
je ne sais pas vrément comment te remercier en fait j'ai posté ça mais au méme temps j 'étais sure que y aura plus personne qui va m'aider
0