Voici le contexte:
int *t[10]; int n;
3 Réponses :
Que
int ** code> signifie p> blockQuote>C'est le type d'un pointeur sur un pointeur sur un
int code>. Si vous Déréférence une variablet code> de ce type (comme ceci:* t code>), vous obtenez un pointeur sur unint code>. Si vous le déréférez deux fois (comme ceci:** t code>), vous obtenez unint code>. P>
Je n'obtiens pas exactement ce que
int ** code> signifie, est-ce un pointeur d'un pointeur? p> blockQuote>oui. p>
int code> = INTEGER LI>int * code> = pointeur-à-entité li>int ** code> = pointeur-to- (pointeur à entier) li>int *** code> = pointeur-to- (pointeur-to- (pointeur à entier)) li>- (et ainsi de suite) li> ul>
Pourquoi la soustraction d'une table des pointeurs - INT donnerait-elle un pointeur du pointeur d'un int? p> blockQuote>
Parce que dans C (et C ++), une matrice se désintègre dans un pointeur sur le premier élément lorsque cela est nécessaire. Par exemple,
int * t [10] code> est une matrice de 10 éléments de pointeur-to-int.t code> peut se décomposer dans un pointeur surT [0] code>, c'est-à-dire un pointeur-to- (pointeur-int-int),int ** code> . Ce pointeur peut ensuite être utilisé pour l'arithmétique du pointeur (comme la soustraction). p>donc, soustraire
n code> à partir det code> vous donnerait unint ** code> qui pointen code> éléments " avant «le début de votre réseau à 10 items (dont BTW ne serait pas un pointeur de sécurité à utiliser, sauf siN code> était zéro ou un petit nombre négatif, car il serait signalé en dehors des limites valides de la mémoire de tableau). P>Lorsque nous nous référons à
* t [0] code> faisons-nous référence àint * p code> au pointeur lui-même parce que c'est un élément de la table ou avons-nous implicitement besoin d'un pointeur pour pointer sur la fente que le point de pointeur sur le un autre endroit? p> blockQuote>Je ne suis pas sûr de comprendre cette question. Étant donné que
t [10] code> est un tableau de 10 pointeurs (c.-à-d. 10int * code>'s), cela signifie quet [0] code> est un Un seul élément de cette matrice et a donc le typeint * code>. Par conséquent,* t [0] code> Déroferférences Le premier pointeur de la matrice, donnant la valeur réelleint code> que le pointeur pointe vers. P>
Si vous avez Si Étant donné que votre tableau est d'indice type A [n]; code>, l'expression de tableau A code>, si elle est évaluée, produit un pointeur de type t * code>, pointant vers a [0] code>. Ceci est parfois appelé règle "Decay" de CAY-TO-Pointer. P>
type code> est int * code>, comme dans votre cas, alors type * code> est int ** code>. p>
int * code>, le pointeur qui indexée dans la matrice est un pointeur nécessairement sur ce type d'élément. P>
Est-ce un pointeur d'un pointeur? i> yup. C'est ça. Un peu bizarre pour un débutant, je suppose que c'est que c'est ça. Fondamentalement, vous devez le désirer. Cependant, sans minimal, reproductible, exemple , nous ne pouvons pas vraiment vous aider plus loin.