Structure

sophie -  
kij_82 Messages postés 4260 Statut Contributeur -
bonsoir,

J'ai une petite question à vous poser sur les structures, en fait je ne comprends pas pourquoi dans une fonction (LirePoly)par exemple qui permet la saisie monome par monome d'un polynome on doit passer l ADRESSE du polynome comme argument
explicitment,
void lirePoly (poly *p)

sachant que poly est une strucure

Merci, et bonne soirée à vous tous

1 réponse

crabs Messages postés 909 Statut Membre 507
 
Salut,
[je pars du principe que c'est du C, ça reste valable pour le C++]
[ce principe s'applique lorsqu'on reste dans le même processus]

Lorsqu'un argument est passé à une fonction, cet argument est copié dans
la pile. toute modification de la valeur de cet argument n'est valable que dans
la fonction appelée, lors du retour dans la fonction appelante, cette zone
mémoire (la pile de la fonction appelé) n'est pas accéssible.

Donc si tu passe un type simple (char, short, int, ...) ou une structure à une
fonction, cette fonction travaille sur une copie 'temporaire privée'.

En passant un pointeur, même si la valeur de ce pointeur est copiée, la
fonction appelé va effectivement pouvoir modifier la zone mémoire pointée.
Cette zone mémoire (désignée par le pointeur lors de l'appel ou sa copie dans la
pile de la fonction appelée) est la même dans la fonction appelante et dans la
fonction appelée : la modification devient alors possible.

A+, crabs
0
kij_82 Messages postés 4260 Statut Contributeur 857
 
... en appellant la fonction avec ta structure précédée d'un '&' pour signifier au prog que tu modifie la valeur de cette structure dans la fonction et que tu veux que cette modification soit effective dans le code appellant la fonction....

(juste pour compléter)
0