DOMANDA Puntatori

Andretti60

Utente Èlite
3,926
2,652
scusa ma la qualita' della foto e' cosi' scarsa che non riesco a leggere nulla, abbi pieta' dei miei poveri occhi :)
 

DispatchCode

Utente Attivo
793
506
CPU
Intel i7 6700HQ, 2.60Ghz, 4 core 8 threads
Scheda Madre
Asustek
Hard Disk
Hitachi 7200 rpm, 1TB
RAM
16GB DDR4 (2 slot su 4)
Scheda Video
Nvidia Geforce GTX 960M, 4GB
Scheda Audio
Realtek
Internet
30Mbps/3Mbps con Eolo
Sistema Operativo
Windows 10 64bit
Scusa eh, ma... copiare e incollare qui il codice (magari formattandolo), richiedeva troppo tempo?
Sul come pubblicarlo, fai riferimento al regolamento della sezione.
 
  • Mi piace
Reactions: Andretti60 e Mursey

pabloski

Utente Èlite
2,427
636
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.
 
  • Mi piace
Reactions: fabio93 e Nikkplay

Entra

oppure Accedi utilizzando

Discussioni Simili

Hot del momento