sguardo! puntatori doppie in realtà negozio come questo
Diciamo
int p,*q,**r;
p=50;
diamo l'indirizzo della p
è 400
(&p
è 400
) se scriviamo q=p
e stampare q
avremo 400
come la risposta in quanto q
si riferisce alla l'indirizzo di p
e *p
renderà 50
come output dal operator *
si riferisce a "valore all'indirizzo". Ora, cerchiamo di dire q
ha l'indirizzo 500
(&q
uscite 500
) quindi quando facciamo così: r=q
il r
contiene il valore 500
e prefisso r
con *
cioè *r
l'uscita deve essere 400
perché r
rende il valore di q
che memorizza l'indirizzo di p
come variabile puntatore.
quindi,
se in un programma C corriamo il seguente codice
int main()
{
int p,*q,**r; //assume the address of p to be 400
//assume the address of q to be 500
p=50;
q=p;
r=q;
printf("Value of p-->%d",p);
printf("\nValue of q-->%d",q);
printf("\nValue at address of q \"in the address displayed above\"-->%d",*p);
printf("\nValue of r \"which will be the address of q\"-->%d",r);
printf("\nValue of r \"which will be the adddress of p-->%d",*r);
printf("\nValue of r \"which will be the value of p\"-->%d",**r);
/*
Please change the format specifiers and replace the specifier from %d to %u in case the address value is not being displayed
*/
return 0;
}
USCITA
-------
valore di P -> 50
Valore di Q- -> 400
Valore all'indirizzo q "nell'indirizzo visualizzato sopra" -> 50
Valore di r "che sarà l'indirizzo di q" -> 500
Valore di r "che sarà l'adddress di p "-> 400
valore di R "che sarà il valore di p" -> 50
Attraverso l'esempio di cui sopra, ho solo cercato di spiegare l'uso di un doppio puntatore. Forse potresti sapere questo ancora ho reso chiaro il punto
Ora utilizzando l'esempio precedente con array.
Look
Gli array sono già puntatori poiché possono essere avvocati con riferimento come * (a + 1) o a [1].
Quindi, i doppi puntatori possono significare array di puntatori o una stringa di stringa come da domanda. L'uso delle notazioni a doppio puntatore dipende dalla situazione.
Nella domanda che hai postato sopra il _TCHAR ** argv o semplicemente char ** argv è l'array di caratteri per l'input della console che è sempre accettato come flusso di caratteri.
In java, usiamo qualcosa di simile come public static void main (String argv [])
Questo mostra chiaramente che il metodo principale accetta input che sono la matrice di array di caratteri (o Stringhe per essere un po 'generici).
Spero tu abbia capito la differenza. Se non gentilmente commentare. Te lo spiegherò.
si
fonte
2015-11-03 05:31:18
ho trovato questa risposta qui [1. Prima risposta] (http://stackoverflow.com/questions/18273370/the- corretto-way-to-initialize-a-dynamic-pointer-to-a-a-array multidimensionale? answertab = oldest # tab-top) [2. Seconda risposta] (http://stackoverflow.com/questions/16001803/pointer -to-pointer-dynamic-two-dimensional-array? answertab = oldest # tab-top) –