Ciao raga, non ho ben capito come si usano (e si sfruttano)
i puntatori a puntatori !!!
Chi mi sa dare una spiegazione o una buona guida esauriente (visto che non la ho ancora trovata)????
Mille grazie, veramente!!
Ciao raga, non ho ben capito come si usano (e si sfruttano)
i puntatori a puntatori !!!
Chi mi sa dare una spiegazione o una buona guida esauriente (visto che non la ho ancora trovata)????
Mille grazie, veramente!!
http://www.oilproject.org/ -->La Scuola On-LIne degli smanettoni!
un semplice esempio è un array di stringhe:
Quello è un puntatore a puntatore, ovvero un array che punta al primo elemento, in questo il primo elemento è un puntatore a char che punta al primo carattere della stringa.codice:char* array_stringhe[];
Altra utilità è per passare a riferimento un puntatore, ovvero se vuoi modificare il puntatore vero è proprio a non la cella di memoria a cui punta.
Praticamente un puntatore a puntatore fa questo:
ptr2 contiene l'indirizzo di memoria di int, e ptr quello di ptr2.codice:-----------| ----------- ----------- | int** ptr| -----> | int* ptr2| ----> | int | |----------| ------------ -----------
In questo modo puoi passare a riferimento la cella di memoria di ptr2.
Se non ricordo male il massimo è puntatore a puntatore a puntatore
codice:int*** ptr_ptr_ptr;
Imparare è un'esperienza, tutto il resto è solo informazione. (Albert Einstein)
No, non credo che ci sia un limite, se non dato dal tipo di architettura. Questo codice, infatti, viene perfettamente compilato ed eseguito:Originariamente inviato da netarrow
Se non ricordo male il massimo è puntatore a puntatore a puntatore
codice:int*** ptr_ptr_ptr;
Ciao.codice:#include <stdio.h> int main() { int ****ptr; ptr = (int****) malloc(2 * sizeof(int***)); *ptr = (int***) malloc(2 * sizeof(int**)); **ptr = (int**) malloc(2 * sizeof(int*)); ***ptr = (int*) malloc(2 * sizeof(int)); ****ptr = 2; printf("Valore: %d\n", ****ptr); return 0; }
"Perchè spendere anche solo 5 dollari per un S.O., quando posso averne uno gratis e spendere quei 5 dollari per 5 bottiglie di birra?" [Jon "maddog" Hall]
Fatti non foste a viver come bruti, ma per seguir virtute e canoscenza
perfetto, era solo un dubbio ;-)Originariamente inviato da LeleFT
No, non credo che ci sia un limite, se non dato dal tipo di architettura. Questo codice, infatti, viene perfettamente compilato ed eseguito:
Ciao.codice:#include <stdio.h> int main() { int ****ptr; ptr = (int****) malloc(2 * sizeof(int***)); *ptr = (int***) malloc(2 * sizeof(int**)); **ptr = (int**) malloc(2 * sizeof(int*)); ***ptr = (int*) malloc(2 * sizeof(int)); ****ptr = 2; printf("Valore: %d\n", ****ptr); return 0; }
Effetivamente, se è possibile fare array multidimensionali tipo doveva essere possibile fare anche puntatori di molti puntatori.
Imparare è un'esperienza, tutto il resto è solo informazione. (Albert Einstein)