0
votes

Qu'est-ce que IN ** signifie en C dans ce contexte?

Voici le contexte:

int *t[10];
int n;


1 commentaires

Est-ce un pointeur d'un pointeur? 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.


3 Réponses :


0
votes

Que int ** signifie

C'est le type d'un pointeur sur un pointeur sur un int . Si vous Déréférence une variable t de ce type (comme ceci: * t ), vous obtenez un pointeur sur un int . Si vous le déréférez deux fois (comme ceci: ** t ), vous obtenez un int .


0 commentaires

5
votes

Je n'obtiens pas exactement ce que int ** signifie, est-ce un pointeur d'un pointeur?

oui.

  • int = INTEGER
  • int * = pointeur-à-entité
  • int ** = pointeur-to- (pointeur à entier)
  • int *** = pointeur-to- (pointeur-to- (pointeur à entier))
  • (et ainsi de suite)

    Pourquoi la soustraction d'une table des pointeurs - INT donnerait-elle un pointeur du pointeur d'un int?

    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] est une matrice de 10 éléments de pointeur-to-int. t peut se décomposer dans un pointeur sur T [0] , c'est-à-dire un pointeur-to- (pointeur-int-int), int ** . Ce pointeur peut ensuite être utilisé pour l'arithmétique du pointeur (comme la soustraction).

    donc, soustraire n à partir de t vous donnerait un int ** qui pointe n éléments " avant «le début de votre réseau à 10 items (dont BTW ne serait pas un pointeur de sécurité à utiliser, sauf si N était zéro ou un petit nombre négatif, car il serait signalé en dehors des limites valides de la mémoire de tableau).

    Lorsque nous nous référons à * t [0] faisons-nous référence à int * p 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?

    Je ne suis pas sûr de comprendre cette question. Étant donné que t [10] est un tableau de 10 pointeurs (c.-à-d. 10 int * 's), cela signifie que t [0] est un Un seul élément de cette matrice et a donc le type int * . Par conséquent, * t [0] Déroferférences Le premier pointeur de la matrice, donnant la valeur réelle int que le pointeur pointe vers.


0 commentaires

0
votes

Si vous avez type A [n]; , l'expression de tableau A , si elle est évaluée, produit un pointeur de type t * , pointant vers a [0] . Ceci est parfois appelé règle "Decay" de CAY-TO-Pointer.

Si type est int * , comme dans votre cas, alors type * est int ** .

Étant donné que votre tableau est d'indice int * , le pointeur qui indexée dans la matrice est un pointeur nécessairement sur ce type d'élément.


0 commentaires