Pointeur vers un tableau de pointeurs
J'ai un tableau de pointeurs int int* arr[MAX];
et je veux stocker son adresse d'une autre variable. Comment puis-je définir un pointeur vers un tableau de pointeurs? c'est à dire:
int* arr[MAX];
int (what here?) val = &arr;
source d'informationauteur moteutsch
Vous devez vous connecter pour publier un commentaire.
Devrait être:
Il n'y a pas besoin d'utiliser une adresse de l'opérateur sur
array
comme les tableaux de désintégration dans implicite des pointeurs sur le côté droit de l'opérateur d'affectation.La bonne réponse est:
Ou tout simplement:
La dernière partie se lit comme "pArr est un pointeur sur tableau de MAX d'éléments de type pointeur sur int".
En C la taille du tableau est stocké dans le type, pas de la valeur. Si vous voulez que ce pointeur pour gérer correctement l'arithmétique des pointeurs sur les tableaux (dans le cas où vous voudriez faire un tableau 2d de ceux et de l'utilisation de ce pointeur pour effectuer une itération sur elle), vous - malheureusement - besoin d'avoir la taille de la matrice incorporé dans le type de pointeur.
Heureusement, depuis le C99 et VLAs (peut-être même plus tôt que C99?) MAX peut être spécifiée au moment de l'exécution, pas le temps de compilation.
IIRC, les tableaux sont implicitement convertible pointeurs, ce serait:
Autant que je sache, il n'y a pas de type "tableau d'entiers" dans
c
donc il est impossible d'avoir un pointeur spécifiques. La seule chose que vous pouvez faire est d'utiliser un pointeur sur int:int*
mais vous devez prendre en compte la taille de l'int et de votre tableau de longueur.Selon cette source http://unixwiz.net/techtips/reading-cdecl.htmlen utilisant la fonction "aller à droite quand vous le pouvez, allez à gauche lorsque vous devez" la règle, on obtient l'2 significations des déclarations figurant dans les réponses précédentes -
J'espère que le sens du sens, et si ils ne le font pas, il serait probablement une bonne idée de lire les mentionnés ci-dessus source.
Maintenant, il devrait être clair que la deuxième déclaration est celui qui moteutsch est à la recherche pour qu'elle déclare un pointeur vers un tableau de pointeurs.
Alors, pourquoi le premier aussi le travail? Rappelez-vous que
est un tableau d'entiers à pointeurs. Donc, val est un pointeur vers le pointeur vers le premier int déclaré à l'intérieur de l'int tableau de pointeurs.
Je crois que la réponse est tout simplement: