Assegnare ad un Puntatore la rappresentazione numerica di un indirizzo di memoria contenuto da un altro Puntatore
Da Gambas-it.org - Wikipedia.
Versione del 5 giu 2015 alle 18:05 di Vuott (Discussione | contributi) (Creata pagina con 'Come è noto la variabile di tipo ''Puntatore'' contiene l'indirizzo di memoria di una variabile. Tale indirizzo di memoria è un numero che è facilmente visibile in rappres...')
Come è noto la variabile di tipo Puntatore contiene l'indirizzo di memoria di una variabile.
Tale indirizzo di memoria è un numero che è facilmente visibile in rappresentazione esadecimale in questo modo:
Public Sub Main() Dim i As Integer Dim p As Pointer i = 999 p = VarPtr(i) Print p;; CStr(p) End
Sappiamo che, per assegnare un'indirizzo di memoria, contenuto da un Puntatore, ad un altra variabile di tipo Puntatore, è sufficiente procedere con un normale assegnamento fra le due variabili Puntatore:
Public Sub Main() Dim i As Integer Dim p1, p2 As Pointer i = 999 p1 = VarPtr(i) p2 = p1 Print p1;; p2 End
E' possibile assegnare l'indirizzo di memoria, contenuto da una variabile Puntatore, ad altra variabile Puntatore anche attraverso la diretta assegnazione della mera rappresentazione numerica dell'indirizzo di memoria medesimo:
Public Sub Main() Dim i As Integer Dim p1, p2 As Pointer Dim s As String i = 999 p1 = VarPtr(i) ' Estrapoliamo il numero dell'indirizzo di memoria nella sua rappresentazione esadecimale: s = Cstr(p1) ' Assegnamo direttamente il numero dell'indirizzo di memoria, dopo averlo convertito in decimale, all'altra variabile di tipo Puntatore: p2 = Val("&" & s) ' Verifichiamo il risultato: Print Int@(p2) End