Stavo lavorando con i puntatori e ho trovato un problema. Finora so che quando creiamo un array di qualsiasi tipo di dati, il nome dell'array è in realtà un puntatore (forse un puntatore statico) puntato verso il primissimo indice dell'array. corretta?Indirizzo dell'array VS pointer-to-pointer: non è lo stesso?
Quindi quello che sto cercando di realizzare è quello di creare un altro puntatore che può contenere l'indirizzo del nome di matrice (cioè un puntatore verso un altro puntatore che nel mio caso è il nome della matrice)
Per esempio:
char name[] = "ABCD"; // name holding the address of name[0]
char *ptr1 = name; // When this is possible
char **ptr2 = &name; // Why not this. It give me error that cannot convert char(*)[5] to char**
Sto utilizzando i blocchi di codice come IDE.
No, No, No. Una matrice non è un puntatore. Può decadere da un puntatore quando viene passato a una funzione ma non è un puntatore. Non pensare agli array come indicatori. – NathanOliver
Quindi intendi quando ho scritto char * ptr1 = name; effettivamente ha fatto char * ptr1 = & name [0]; ? e il nome stesso non è una variabile puntatore separata? –
Gli array non sono puntatori "rigidi". Il puntatore è una posizione di memoria che contiene un indirizzo. Quando si usa un compilatore di array si sa solo quale indirizzo è, ma non è memorizzato da nessuna parte e non può essere sovrascritto. La tua seconda affermazione implicava che potevi fare * ptr2 = somethingelse, che non può essere fatto. – nsilent22