DOMANDA Puntatori

Pubblicità

Nikkplay

Nuovo Utente
Messaggi
6
Reazioni
0
Punteggio
20
In questo allegato mi potete spiegare perchè la risposta è la terza?
Grazie a tutti.
 

Allegati

  • 5a2a226e-9ce6-4c8f-a676-76b93609f7df.webp
    5a2a226e-9ce6-4c8f-a676-76b93609f7df.webp
    52.1 KB · Visualizzazioni: 55
scusa ma la qualita' della foto e' cosi' scarsa che non riesco a leggere nulla, abbi pieta' dei miei poveri occhi :)
 
In questo allegato mi potete spiegare perchè la risposta è la terza?
Grazie a tutti.

Wow grandissimo. Il tuo professore dev'essere un mattacchione.

Comunque lì fa un uso molto molto hacker-style dei puntatori e relativa aritmetica.

Cioè, parte col definire un vettore b di int e un puntatore q che punta al terzo elemento di b ( cioè allo slot che contiene il numero 3 ).

Poi chiama f passandogli questo puntatore q ( cioè il parametro p = locazione del numero 3 in b ). Però poi guarda che fa f. Prima si porta avanti di altri due slot ( x=p+2 ) andando a puntare allo slot di b corrispondente al numero 5 e successivamente va indietro di 3 slot, ritornando questo valore oltretutto ( return x-3 ).

Cioè alla fine ottieni che f(q) ti dà il puntatore allo slot numero 2 di 2, quello che contiene il numero 2.

A questo punto però, fa un'assegnazione tra i valori contenenuti in f(q) e q ( che ricorda, sono entrambi puntatori ). Cioè *f(q) dice "vai a modificare il valore contenuto nell'area di memoria puntata da f(q)" e =*q ti dice "e mettici dentro il valore contenuto nell'area di memoria puntata da q".

In parole povere, prende lo slot 3 di b ( che contiene il numero 3 ), ne legge il contenuto e va a ficcare questo contenuto nello slot 2 di b ( che contiene 2 ).

Per cui b diventa b=[1,3,3,4,5]....cioè il numero nello slot due viene sovrascritto con quello nello slot 3.

Come dicevo, è una mossa di kung fu con l'ausilio dei puntatori. Se capisci come funziona, non avrai mai più problemi coi puntatori in vita tua.
 
Pubblicità
Pubblicità

Discussioni Simili

Indietro
Top