SOS tableau en c++
Fermé
asma sisi
Messages postés
96
Date d'inscription
vendredi 29 août 2008
Statut
Membre
Dernière intervention
23 mars 2011
-
23 nov. 2008 à 20:07
fiddy Messages postés 11069 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 - 23 nov. 2008 à 21:48
fiddy Messages postés 11069 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 - 23 nov. 2008 à 21:48
A voir également:
- SOS tableau en c++
- Tableau croisé dynamique - Guide
- Tableau ascii - Guide
- Tableau word - Guide
- Trier tableau excel - Guide
- Comment imprimer un tableau excel sur une seule page - Guide
1 réponse
fiddy
Messages postés
11069
Date d'inscription
samedi 5 mai 2007
Statut
Contributeur
Dernière intervention
23 avril 2022
1 844
23 nov. 2008 à 21:18
23 nov. 2008 à 21:18
Salut,
En fait, en C ou en C++, on ne passe jamais un tableau (trop gourmand en mémoire), mais on passe un pointeur sur le premier argument. Donc que le prototype de ta fonction soit void fct(int a[5]); ou void fct(int a[]), ça sera interprété comme un void fct(int *a). On passe seulement l'adresse.
Donc, aucun souci ;)
Cdlt
En fait, en C ou en C++, on ne passe jamais un tableau (trop gourmand en mémoire), mais on passe un pointeur sur le premier argument. Donc que le prototype de ta fonction soit void fct(int a[5]); ou void fct(int a[]), ça sera interprété comme un void fct(int *a). On passe seulement l'adresse.
Donc, aucun souci ;)
Cdlt
23 nov. 2008 à 21:40
si c'est vrai signaler moi
merci encore FIDDY
23 nov. 2008 à 21:48
Les deux tableaux n'ont rien à voir. L'un est un pointeur sur une zone. Et l'autre est un vrai tableau. On peut les confondre assez facilement, car pour avoir accès à une case, c'est la même notation dans les deux cas, à savoir : *(tab+i) ou tab[i]. Pareil pour tab2.
D'ailleurs : pour te convaincre que c'est pas pareil pour autant : la taille de tab2 fait 10*taille(int) = 40 (dépend de l'architecture de ta machine).
Et la taille de tab fait la taille d'un pointeur, donc 4.
Voilà pourquoi le C, (surtout à ses débuts) ne passe pas une copie du tableau en argument à une fonction, mais envoie dans les deux cas, un pointeur sur le premier argument.
Donc si tu as une fonction :
Cela sera équivalent. Ce sera dans tous les cas, le pointeur qui sera passé.
Cdlt