Qu'est-ce que cela signifie quand un objet a 2 astérisques au début?
**variable
C'est pointeur à pointeur. Pour plus de détails, vous pouvez vérifier: Pointeur vers pointeur
[~ # ~] modifier [~ # ~] Cela peut être bon par exemple pour allouer dynamiquement des tableaux multidimensionnels:
Comme :
#include <stdlib.h>
int **array;
array = malloc(nrows * sizeof(int *));
if(array == NULL)
{
fprintf(stderr, "out of memory\n");
exit or return
}
for(i = 0; i < nrows; i++)
{
array[i] = malloc(ncolumns * sizeof(int));
if(array[i] == NULL)
{
fprintf(stderr, "out of memory\n");
exit or return
}
}
Dans une déclaration, cela signifie que c'est un pointeur vers un pointeur:
int **x; // declare x as a pointer to a pointer to an int
Lors de son utilisation, il le reporte deux fois:
int x = 1;
int *y = &x; // declare y as a pointer to x
int **z = &y; // declare z as a pointer to y
**z = 2; // sets the thing pointed to (the thing pointed to by z) to 2
// i.e., sets x to 2
Cela signifie que la variable est un pointeur vers un pointeur.
Pointeur vers un pointeur lors de la déclaration de la variable.
Référence double pointeur lorsqu'elle est utilisée en dehors de la déclaration.
Vous pouvez utiliser cdecl pour expliquer les types C.
Il y a une interface en ligne ici: http://cdecl.org/ . Entrez "int ** x" dans le champ de texte et vérifiez le résultat.
Pointeur vers un pointeur.
** la variable est un double déréférencement. Si variable est une adresse d'une adresse, l'expression résultante sera la valeur l à l'adresse stockée dans la variable *.
Cela peut signifier différentes choses si cela fait partie de la déclaration:
la variable type ** signifierait, d'autre part, un pointeur vers un pointeur, c'est-à-dire une variable qui peut contenir l'adresse d'une autre variable, qui est aussi un pointeur, mais cette fois vers une variable de type 'type'
Cela signifie que la variable est déréférencée deux fois. Supposons que vous ayez un pointeur vers un pointeur sur char comme ceci:
char ** variable = ...;
Si vous souhaitez accéder à la valeur vers laquelle pointe ce pointeur, vous devez le déréférencer deux fois:
**variable
Pointeur vers un autre pointeur
** est un pointeur vers un pointeur. Ils sont parfois utilisés pour les tableaux de chaînes.
C'est un pointeur vers un pointeur. Vous pouvez l'utiliser si vous souhaitez pointer vers un array
ou un const char *
(chaîne). En outre, dans Objective-C avec Cocoa, cela est souvent utilisé pour pointer vers un NSError*
.
c'est un pointeur à pointeur ,. comme si * x signifie qu'il contiendra une adresse d'une variable que si je dis m = & x que m est affiché comme int ** m