risposta
È puntatore al puntatore. Per maggiori dettagli è possibile controllare: Pointer to pointer
EDIT Può essere un bene per esempio, per l'allocazione dinamica array multidimensionali:
come:
#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
}
}
Sarebbe anche una buona idea dimostrare di liberare correttamente il multidimensionale array in ordine inverso di allocazione. –
Sì, hai ragione :). Non dimenticare di usare \t per (int i = 0; i
Grazie. Quel collegamento era il più vantaggioso. – numerical25
Significa che la variabile è un puntatore a un puntatore.
Puntatore a un puntatore.
Puntatore a un puntatore quando si dichiara la variabile.
Deve riferimento a doppio puntatore quando utilizzato al di fuori della dichiarazione.
In una dichiarazione, significa che è un puntatore a un puntatore:
int **x; // declare x as a pointer to a pointer to an int
Quando lo si utilizza, deferenze due volte:
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
E se si dovesse impostare z a 2 usando solo un punto * z = 2 ?? – numerical25
@num Cambierà y per puntare alla posizione di memoria 2, e '* y = 1;' o '** z = 1;' entrambi proverebbero a cambiare la memoria all'indirizzo 2, che è quasi certamente al di fuori del legale intervallo che ti è stato assegnato –
È un puntatore a un puntatore. È possibile utilizzare questo se si desidera puntare a uno array
oa const char *
(stringa). Inoltre, in Objective-C con Cocoa questo è spesso usato per indicare un NSError*
.
** la variabile è doppia dereferenza. Se la variabile è un indirizzo di un indirizzo, l'espressione risultante sarà il lvalue all'indirizzo memorizzato nella variabile *.
Può significare cose diverse se si tratta di una parte della dichiarazione:
tipo ** variabile significherebbe, d'altra parte, un puntatore a un puntatore, cioè, una variabile che può contenere l'indirizzo di un'altra variabile , che è anche un puntatore, ma questa volta a una variabile di tipo "tipo"
Significa che la variabile viene dereferenziata due volte. Si supponga di avere un puntatore a un puntatore a caratteri come questo:
char ** variabile = ...;
Se si desidera accedere al valore questo puntatore sta puntando, bisogna dereferenziarlo due volte:
** variabile
È possibile utilizzare cdecl per spiegare C-type.
C'è un'interfaccia online qui: http://cdecl.org/. Inserisci "int ** x" nel campo di testo e controlla il risultato.
puntatore ad un altro puntatore
Se sta facendo una domanda di base, probabilmente ha bisogno anche del concetto di puntatore. – agf
** è un puntatore a un puntatore. Questi sono a volte utilizzati per matrici di stringhe.
è un puntatore al puntatore ,. come se * x significa che conterrà un indirizzo di una variabile che se dico m = & x di m è mostrato come int ** m
- 1. cosa significa "@" significa in C#
- 2. Cosa significa/*! */Significa in C#?
- 3. Cosa significa: :: significa in C++?
- 4. Cosa significa "??" significa in C#?
- 5. Cosa significa [,] in C#?
- 6. Cosa significa :: * in C++?
- 7. Cosa significa "&" in C++?
- 8. Che cosa significa "[questo]" significa in C++
- 9. Che cosa significa?. significa in C#?
- 10. Cosa significa "classe:" in C++?
- 11. Cosa significa "() =>" in C#?
- 12. Cosa significa (void **) in C?
- 13. Cosa significa "?" fare in C++?
- 14. Cosa significa 0u in C#?
- 15. Shellcode in C - Cosa significa?
- 16. Cosa significa the :: in C++?
- 17. Cosa significa -> in C++?
- 18. Cosa significa "^" in Objective-C
- 19. Cosa significa cmd/C?
- 20. Cosa significa = ~ significa in Perl
- 21. Cosa significa questa istruzione C?
- 22. C - Cosa significa questa linea?
- 23. Cosa significa^dopo un tipo significa in C++?
- 24. In C# cosa significa 'dove T: class' significa?
- 25. cosa significa in c int a: 16 ;?
- 26. Cosa significa il suffisso "_t" in C?
- 27. Cosa significa scrivere su stdout in C?
- 28. In C cosa significa [foo] = bar?
- 29. cosa significa in C questa sintassi dell'interruttore?
- 30. Cosa fa ?? operatore significa in C#?
Ci vuole otto risposte per spiegare ciò che un puntatore ad una puntatore è? –
@Andreas La gente fa tutte le domande banali, perché ottengono molti punti di vista (106 fino ad ora) e quindi molti upvotes. Quindi [16 upvotes in 17 minuti] (http://stackoverflow.com/questions/2893129/what-does-mean-in-c/2893145#2893145) per una risposta relativamente semplice –
possibile duplicato di [Utilizza per più livelli di pointer dereferences?] (http://stackoverflow.com/questions/758673/uses-for-multiple-levels-of-pointerferences) –