Sono programmi per esercitarsi a capire i puntatori e i doppi puntatori ... non fanno nulla di particolare e non sono sbagliati ...
Un puntatore ad un puntatore è semplicemente l'indirizzo dell'indirizzo di una variabile ...
Per capire questo passo passo ...
-- nel main --
int b[]={2,3} : dichiara un vettore di due elementi interi e assegna al primo elemento il valore 2 e al secondo elemento il valore 3
int *q=b : assegna al puntatore q l'indirizzo iniziale del vettore (che è anche l'indirizzo del suo primo elemento)
f(q) : chiama la funzione f passando come argomento il valore del puntatore q (cioè chiama la funzione f passando l'indirizzo del vettore b)
-- nella funzione f --
int **x=&p : dichiara x come doppio puntatore e lo fa puntare all'indirizzo del puntatore p (x diventa l'indirizzo dell'indirizzo del vettore b)
*p+2 : ottiene il risultato della somma del valore a cui punta p con 2 (dato che p punta al primo elemento del vettore, somma 2 con 2 e ottiene 4 che sfrutta in seguito)
(*x+1) : ottiene il puntatore al prossimo elemento del vettore b
*(...)=... : assegna a tale elemento il risultato precedente, ovvero assegna al secondo elemento del vettore b (che era 3) il nuovo valore 4
return x; : restituisce il puntatore al puntatore al vettore b (ovvero il puntatore al puntatore al primo elemento del vettore b)
-- nel main --
*q+2 : ottiene il risultato della somma del valore puntato dal puntatore al primo elemento più 2 (ovvero 4)
**f(q) : assegna al valore puntato dal puntatore al puntatore restituito (ovvero al primo elemento) il risultato precedente (ovvero 4)
alla fine visualizza il primo elemento (che sarà 4) , il secondo elemento (che sarà 4), il valore puntato dal puntatore al primo elemento (sempre 4)
Otterrai a video i valori
4 4 4
(magari uno accanto all'altro senza spazi) che è quello che vorrà sapere il professore per capire se hai capito ...
Ricorda che nessuno è obbligato a risponderti e che nessuno è perfetto ...
---
Il grande studioso italiano Bruno de Finetti ( uno dei padri fondatori del moderno Calcolo delle probabilità ) chiamava il gioco del Lotto Tassa sulla stupidità. |