Initialisation "un pointeur vers un tableau d'entiers"
int (*a)[5];
Comment peut-on Initialiser un pointeur sur un tableau de 5 entiers indiqué ci-dessus.
Est ci-dessous l'expression correcte ?
int (*a)[3]={11,2,3,5,6};
source d'informationauteur EnterKEY
Vous devez vous connecter pour publier un commentaire.
Supposons que vous disposez d'un tableau de int de longueur
5
par exempleEnsuite, vous pouvez faire
a = &x;
Pour accéder aux éléments de la matrice de vous:
(*a)[i]
(==(*(&x))[i]
==(*&x)[i]
==x[i]
) parenthèse nécessaire, car la priorité de[]
opérateur est plus, alors,*
. (une erreur commune peut faire*a[i]
pour accéder aux éléments du tableau).Comprendre ce que vous avez demandé en question est un moment de la compilation d'erreur:
Il n'est pas correct et une incompatibilité de type, aussi, parce que
{11,2,3,5,6}
peut être attribué àint a[5];
et de l'affectation deint (*a)[3]
.En outre,
Vous pouvez faire quelque chose comme par une seule dimension:
De même, pour les deux dimensions essayez ceci(merci @la caf):
{11,2,3,5,6}
est un liste d'initialiseuril n'est pas un tableau, de sorte que vous ne pouvez pas pointer sur lui. Un tableau de pointeur doit point à un tableau, qui est valide emplacement de la mémoire. Si le tableau est une variable nommée ou tout simplement un morceau de la mémoire allouée n'a pas d'importance.Tout dépend le type de tableau que vous avez besoin. Il existe différentes façons de déclarer des tableaux en C, en fonction de l'objet:
et puis vous accédez au contenu de la matrice comme dans: