J'aimerais savoir quelle est la différence entre les 3 écritures suivantes :tab**, *tab[] et tab[][]. On m'avait dit que c'était équivalent, mais je me suis aperçu que ce n'était en fait pas vraiment le cas!
J'aimerais savoir quelle est la différence entre les 3 écritures suivantes :tab**, *tab[] et tab[][]. On m'avait dit que c'était équivalent, mais je me suis aperçu que ce n'était en fait pas vraiment le cas!
Salut !
C'est équivalent suivant les utilisation qui en sont faites en réalité:
- tab** : Pointeur de pointeur sur type, cela permet entre autre de pouvoir passer l'adresse d'un pointeur pour qu'il soit modifiable par le biais d'un argument d'une fonction. Cette forme permet également de créer un tableau de tableau dynamique donc par allocation dynamique de mémoire. On peut également passer des tableau de tableau en argument à des fonctions par le biais d'un pointeur de pointeur.
- * tab[] : Ceci est un tableau de pointeur, ce qui est déjà différent en soi ! Ceci permet en outre de créer un tableau et d'y insérer des pointeur, un peu comme on le ferais avec une liste chaînée. Une des utilité possible serait un tableau de chaîne de caractères dont l'espace pour chaque chaînes peut être alloué dynamiquement !
- tab[][] : Ca bin, c'est un tableau de tableau tout ce qu'il y a de plus simple en fait !
Quoi qu'il en soit, ces formes resteront toujours différentes l'une de l'autre !
Mon Site
Ma bibliothèque de gestion des chaînes de caractères en C
L'imagination est plus importante que le savoir. A. Einstein
Je ne répond à aucune question technique par MP, merci d'avance !
'On' est un âne. Il confond les tableau et les pointeurs. Se méfier des charlatans qui croient connaitre le C.Envoyé par Dud225
- T **pp : pointeur sur pointeur sur T. Par exemple, la base d'un tableau de T* (pointeurs sur T)
- T *p[] n'a de sens que pour un paramètre de fonction. Il est équivalent à T **pp
- T *a[N] est un tableau de pointeurs sur T.
- T a[][] n'existe pas.
- T a[N][M] est un tableau à 2 dimensions de T.
Et j'ajoute T (*p)[N] : Pointeur sur tableau(x) de T.
SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.
"Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
Apparently everyone. -- Raymond Chen.
Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.
Partager