Passer un tableau de structure en paramètre
Fermé
lagarkane
-
20 juil. 2010 à 17:01
fiddy Messages postés 11069 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 - 21 juil. 2010 à 20:10
fiddy Messages postés 11069 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 - 21 juil. 2010 à 20:10
A voir également:
- Passer un tableau de structure en paramètre
- Tableau croisé dynamique - Guide
- Tableau ascii - Guide
- Passer de windows 7 à windows 10 - Guide
- Piratage facebook changer mot de passe - Guide
- Passer de qwerty a azerty - Guide
3 réponses
ghuysmans99
Messages postés
2496
Date d'inscription
jeudi 14 juillet 2005
Statut
Contributeur
Dernière intervention
5 juin 2016
338
21 juil. 2010 à 17:53
21 juil. 2010 à 17:53
Si tu voulais dire ça, alors c'est bon : Donc si par exemple je passe en paramètre un pointeur sur une structure qui contient un tableau de pointeurs vers une structure
Pour expliquer autrement ce que j'avais voulu montrer via des lignes de programme, que tu donnes à une fonction un pointeur vers une structure ou vers un tableau de structures (du moment qu'elles soient du même type), le compilo s'en fiche.
Pour expliquer autrement ce que j'avais voulu montrer via des lignes de programme, que tu donnes à une fonction un pointeur vers une structure ou vers un tableau de structures (du moment qu'elles soient du même type), le compilo s'en fiche.
ghuysmans99
Messages postés
2496
Date d'inscription
jeudi 14 juillet 2005
Statut
Contributeur
Dernière intervention
5 juin 2016
338
Modifié par ghuysmans99 le 21/07/2010 à 11:15
Modifié par ghuysmans99 le 21/07/2010 à 11:15
Définir int mafonction(int* tableauInt); équivaut à int mafonction(int tableauInt[]);. Pour accéder à un élément à partir de mafonction, utilise tableauInt[case].x
Google is your best friend
VB.NET is good ... VB6 is better !
Google is your best friend
VB.NET is good ... VB6 is better !
fiddy
Messages postés
11069
Date d'inscription
samedi 5 mai 2007
Statut
Contributeur
Dernière intervention
23 avril 2022
1 835
21 juil. 2010 à 08:46
21 juil. 2010 à 08:46
Définir int mafonction(int* tableauInt); équivaut à int mafonction(int tableauInt);.
Euh, t'es sûr de ton coup ?
Euh, t'es sûr de ton coup ?
ghuysmans99
Messages postés
2496
Date d'inscription
jeudi 14 juillet 2005
Statut
Contributeur
Dernière intervention
5 juin 2016
338
21 juil. 2010 à 11:16
21 juil. 2010 à 11:16
Voilà, c'est modifié. Merci de m'avoir rattrapé, je devais pas être en forme ce jour-là.
fiddy
Messages postés
11069
Date d'inscription
samedi 5 mai 2007
Statut
Contributeur
Dernière intervention
23 avril 2022
1 835
21 juil. 2010 à 20:03
21 juil. 2010 à 20:03
Pas de soucis, l'erreur est humaine. La prochaine fois, tu me corrigeras :-))).
ok^^
C'était pas très clair dans ma tête, alors j'ai un peu révisé. :°
Donc si par exemple je passe en paramètre un pointeur sur une structure qui contient un tableau de structure, l'accès se fera comme ca:
Dans le main, l'appel de la fonction:
La fonction:
En fait, si j'ai bien compris, lors de l'appel d'une fonction, pour un tableau ou une structure, on passe son adresse, sans se préoccuper de savoir si dedans il y a 0 ou 36000 tableaux de structures imbriqués^^
C'était pas très clair dans ma tête, alors j'ai un peu révisé. :°
Donc si par exemple je passe en paramètre un pointeur sur une structure qui contient un tableau de structure, l'accès se fera comme ca:
Dans le main, l'appel de la fonction:
maFonction(&adresseDeMaStructure);
La fonction:
void maFonction(struct Machin* pointeur) { pointeur->maVariable[1]->x = 0; }
En fait, si j'ai bien compris, lors de l'appel d'une fonction, pour un tableau ou une structure, on passe son adresse, sans se préoccuper de savoir si dedans il y a 0 ou 36000 tableaux de structures imbriqués^^
fiddy
Messages postés
11069
Date d'inscription
samedi 5 mai 2007
Statut
Contributeur
Dernière intervention
23 avril 2022
1 835
21 juil. 2010 à 20:10
21 juil. 2010 à 20:10
En fait en C, il est impossible de passer un tableau en paramètre d'une fonction.
Lorsque tu passes un tableau en paramètre d'une fonction, le compilateur le convertira automatiquement en adresse du premier élément du tableau.
De fait le prototype : void toto(int *tab); est pareil que int toto(int tab[]); ou encore que int tab(int tab[NB]) (NB sera ignoré en fait). Dans la fonction appelée, il n'y a alors aucun moyen de savoir la longueur du tableau (sauf pour les tableaux de caractères, qui se finissent par un \0). C'est pour celà qu'on passe également la taille du tableau en paramètre. Donc le prototype est souvent : void toto(const int *tab, const size_t n);
Et en particulier pour les tableaux de structure.
Cdlt,
Lorsque tu passes un tableau en paramètre d'une fonction, le compilateur le convertira automatiquement en adresse du premier élément du tableau.
De fait le prototype : void toto(int *tab); est pareil que int toto(int tab[]); ou encore que int tab(int tab[NB]) (NB sera ignoré en fait). Dans la fonction appelée, il n'y a alors aucun moyen de savoir la longueur du tableau (sauf pour les tableaux de caractères, qui se finissent par un \0). C'est pour celà qu'on passe également la taille du tableau en paramètre. Donc le prototype est souvent : void toto(const int *tab, const size_t n);
Et en particulier pour les tableaux de structure.
Cdlt,