aide sur une ligne...
Le
kurtz le pirate
bonjour,
dans un bouquin que je suis en train de lire, j'ai trouvé cette fonction
-
void midpnt (int B, int C, int *pP, float x, float y, float z) {
int tmp, e;
if (B<C) { tmp=B; B=C; C=tmp }
for (e=0;e<nedge; e++)
if (edges[e].i == B && edges[e].j == C) break;
if (e == nedge)
{ edges[e].i = B; edges[e].j = C;
edges[e].P = *pP = ++npoints;
nedge++;
point(*pP, x, y, z)
} else *pP = edges[e].P
}
-
dans le main() elle est appelée comme ça :
midpnt(B, C, &P, xP, yP, zP);
la ligne que je ne suis pas sûr d'avoir compris c'est :
edges[e].P = *pP = ++npoints;
* incrément de 'npoints'
* copie de la valeur de npoints dans la variable pointée par *pP (le 'P'
dans le main puisque passé par &P)
* copie de cette même valeur dans le tableau de structure edges[e].P
donc si npoints = 5, après la ligne :
- npoints = 6
- P (global) = 6
- edges[e].P = 6 aussi !
j'ai bon ou pas ?
merci de votre aide.
--
klp
dans un bouquin que je suis en train de lire, j'ai trouvé cette fonction
-
void midpnt (int B, int C, int *pP, float x, float y, float z) {
int tmp, e;
if (B<C) { tmp=B; B=C; C=tmp }
for (e=0;e<nedge; e++)
if (edges[e].i == B && edges[e].j == C) break;
if (e == nedge)
{ edges[e].i = B; edges[e].j = C;
edges[e].P = *pP = ++npoints;
nedge++;
point(*pP, x, y, z)
} else *pP = edges[e].P
}
-
dans le main() elle est appelée comme ça :
midpnt(B, C, &P, xP, yP, zP);
la ligne que je ne suis pas sûr d'avoir compris c'est :
edges[e].P = *pP = ++npoints;
* incrément de 'npoints'
* copie de la valeur de npoints dans la variable pointée par *pP (le 'P'
dans le main puisque passé par &P)
* copie de cette même valeur dans le tableau de structure edges[e].P
donc si npoints = 5, après la ligne :
- npoints = 6
- P (global) = 6
- edges[e].P = 6 aussi !
j'ai bon ou pas ?
merci de votre aide.
--
klp

Poser une question


Si j'ai bien compris ta question, tu demandes ce que fait :
a = b = c;
Réponse : place la valeur c dans b et a.
Je ne vois par contre pas l'intérêt d'avoir posté une fonction si moche.
--
Éric Lévénez
FAQ de fclc :
je ne suis pas expert en c. je n'étais pas sûr non plus du '*pP' et du
'&P'. je trouve ça assez déroutant.
moche... peut être, c'est ton opignon. c'est ce que j'ai trouvé dans un
bouquin. j'essaye juste de comprendre.
--
klp
Il me semble bien que c'est exactement ça. Notez que vous affectez la
valeur 6 à une variable (P) locale de l'appelant (main()). Vous
l'affectez également à un élément d'un tableau de structures edges qui
est global, comme nedge. C'est au moins à ce niveau que Éric détecte de
la mocheté.
--
Pierre Maurette