Tableau de struct et fonction en C [Résolu]

Signaler
Messages postés
240
Date d'inscription
dimanche 31 octobre 2004
Statut
Membre
Dernière intervention
31 décembre 2006
-
Messages postés
2023
Date d'inscription
mardi 24 septembre 2002
Statut
Membre
Dernière intervention
28 juillet 2008
-
Bonjour à tous.

J'ai un petit problème de syntax, après plusieurs recherche sur le net,
je n'ai pu ni affirmer ou ni infirmer la validation de mon code

Dans mon programme, je déclare un tableau de struct à deux dimensions :



typedef struct{


int x;


int y;

} point;

point tab[10][10];



ensuite, j'ai écrit une fonction pour modifier son contenu, et c'est là où je ne suis pas sur :



void modifi_tableau( point tab[10][10]){

tab[1][1].x = 2;

...

}



ensuite pour appeler ma fonction je fais :



modifi_tableau(tab);



Cependant je me pose la question si je ne dois pas définir ma fonction comme ceci :



void modifi_tableau(point *tab){

*tab[1][1].x = 2;

....

}



et de l'appeler de la même façon.



voilà, en espérant que ma question est assez claire, je vous remercie d'avance pour votre aide.

3 réponses

Messages postés
2023
Date d'inscription
mardi 24 septembre 2002
Statut
Membre
Dernière intervention
28 juillet 2008
5
void modifi_tableau(point *tab){

*tab[1][1].x = 2;

....

}


Pour passer un tableau à deux dimensions en argument, tu dois définir la taille de la seconde dimension.

void modifi_tableau(point tab[][10]);



ou je pense que ca c'est correct aussi:

void modifi_tableau(point *tab[10]);
Messages postés
240
Date d'inscription
dimanche 31 octobre 2004
Statut
Membre
Dernière intervention
31 décembre 2006
1
Merci pour ta réponse luhtor, mais peut tu m'éclairer encore stp.

D'après ce que j'ai pu voir dans mes cours et sur le net, cela pourrai être :
void modifi_tableau(point *tab[10]);

Mais alors comment je fais pour modifier sa valeur ??? comme je l'ai indiquer, c'est à dire
*tab[1][1].x = 2

Et l'appel de la fonction ce fait aussi comme je l'ai indiqué ??
modifi_tableau(tab);

merci pour vos futur réponse.
Messages postés
2023
Date d'inscription
mardi 24 septembre 2002
Statut
Membre
Dernière intervention
28 juillet 2008
5
Oui l'appel de fonction c'est modifi_tableau(tab).



"Mais alors comment je fais pour modifier sa valeur ??? comme je l'ai indiquer, c'est à dire
*tab[1][1].x = 2"



Mais il n'y a pas de pb, c'est un type que tu envois en argument, un tableau à deux dimensions.



void modifi_tableau(point tab[][10])

{

tab[4][2] = ce que tu veux;

}



Tu accèdes normalement aux éléments. Il faut simplement spécifier la
taille de la seconde dimension. Ca signifie pas le 10ème élément.