[C] Tableau en paramètre + return
Résolu/Fermé
A voir également:
- [C] Tableau en paramètre + return
- Tableau croisé dynamique - Guide
- Tableau word - Guide
- Tableau ascii - Guide
- Trier tableau excel - Guide
- Remettre parametre usine pc - Guide
4 réponses
kilian
Messages postés
8732
Date d'inscription
vendredi 19 septembre 2003
Statut
Non membre
Dernière intervention
5 février 2025
1 526
11 janv. 2010 à 18:31
11 janv. 2010 à 18:31
Oui, aucun soucis. Tu n'as pas besoin de retourner le tableau par contre. Il est passé en paramètre par adresse et non par copie. Donc lorsque tu le modifies depuis CreerPaquet(), il ne modifie pas une copie, il modifie le vrai, celui qui a été passé en paramètres:
typedef struct _Paquet { int dest; int source; int etat; char* message; } Paquet; void CreerPaquet(Paquet paquet[], int N) { int i; for(i = 0; i < N; i++) { paquet[i].dest = 0; paquet[i].source = 0; paquet[i].etat = 0; paquet[i].message = ""; } } int main(void) { Paquet paquet[3]; CreerPaquet(paquet, 3); return 0; }
fiddy
Messages postés
11069
Date d'inscription
samedi 5 mai 2007
Statut
Contributeur
Dernière intervention
23 avril 2022
1 844
11 janv. 2010 à 21:47
11 janv. 2010 à 21:47
Salut,
Non ce n'est pas possible de renvoyer un tableau. En fait tu renverras un pointeur. D'ailleurs ce n'est pas possible non plus d'envoyer un tableau en argument.
De ce fait, comme le dit kilian, la modification de paquet dans ta fonction modifiera bel et bien le tableau dans ta fonction appelante.
Cdlt,
Non ce n'est pas possible de renvoyer un tableau. En fait tu renverras un pointeur. D'ailleurs ce n'est pas possible non plus d'envoyer un tableau en argument.
De ce fait, comme le dit kilian, la modification de paquet dans ta fonction modifiera bel et bien le tableau dans ta fonction appelante.
Cdlt,
kilian
Messages postés
8732
Date d'inscription
vendredi 19 septembre 2003
Statut
Non membre
Dernière intervention
5 février 2025
1 526
12 janv. 2010 à 03:03
12 janv. 2010 à 03:03
Voilà.
Pour compléter ce que dit fiddy, en fait tu peux passer le tableau en paramètres, le code d'au dessus marche. Mais c'est un faux semblant, en réalité tu ne passes pas le tableau mais son adresse.
Ce code:
est équivalent à celui-ci (syntaxe plus traditionelle):
Pour compléter ce que dit fiddy, en fait tu peux passer le tableau en paramètres, le code d'au dessus marche. Mais c'est un faux semblant, en réalité tu ne passes pas le tableau mais son adresse.
Ce code:
void CreerPaquet(Paquet paquet[], int N)
est équivalent à celui-ci (syntaxe plus traditionelle):
void CreerPaquet(Paquet *paquet, int N)