Bonjour tout le monde,
Voilà je souhaite enoyer une structure de données en paramètres dans une fonction.
Je voudrais savoir si la manipulation à executer est la même que pour une variable banale(exemple : entier, chaîne de caractères).
Merci
Bonjour tout le monde,
Voilà je souhaite enoyer une structure de données en paramètres dans une fonction.
Je voudrais savoir si la manipulation à executer est la même que pour une variable banale(exemple : entier, chaîne de caractères).
Merci
Bonjour,
oui, tu la declares de meme facon que tu la declarerais au sein d'une fonction.
Donc il n'y a pas d'histoires de pointeur comme je l'ai entendu?
j'avais lu qu'avec le C K&R, c'etait obligé de la passer en pointeur, mais j'en sais pas plus.
en ANSI C (je crois que c'est la majorite des compilateurs) tu peux la passer sans pointeur à part si tu veux en modifier la valeur et que ca soit repercute dans la fonction appelante.
Un programme qui passe une structure sans le faire par pointeur n'a rien compris au fonctionnement du C. C'est possible en effet mais déconseillé d'un point de vue performances et en plus cela est dangereux pour un débutant.Envoyé par coca25
La structure sera recopiée lors du passage de paramètre mais d'une facon superficielle. Cela provoque souvent des erreurs de codage parce que le programmeur suppose qu'il a affaire avec une copie compléte.
On passe par pointeur pour éviter cette copie et en même temps cette confusion.
Enfin, si on ne veut pas pouvoir modifier la structure par crainte d'effets de bord, on utilise le mot clé const.
Jc
Ah ok merci
Je vais essayer ça, je vous tient au courant.
Contrairement aux tableaux, on peut techniquement passer la valeur de la structure, mais c'est une perte de temps et d'espace mémoire. Il est préférable de passer l'adresse selon le schéma générique bien connu suivant:Envoyé par god_enel
avec
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 T a; f(&a)
Qui permet un accès à la structure en lecture et en écriture.
Code : Sélectionner tout - Visualiser dans une fenêtre à part void f (T *p);
Nota : dans la fonction, on utilise la notation -> pour atteindre les éléments :
Si on désire un accès en lecture seule, on ajoute le qualificateur const :
Code : Sélectionner tout - Visualiser dans une fenêtre à part p->elem = 123;
Code : Sélectionner tout - Visualiser dans une fenêtre à part void f (T const *p);
Merci pour votre aide je vais essayer ainsi.
Comme je ne suis pas chez moi je vous tiens au courant ce soir ou au plus tard demain.
Merci encore.
Partager