Conoscere con i Puntatori i valori contenuti in un vettore

Da Gambas-it.org - Wikipedia.
Versione del 2 giu 2015 alle 09:40 di Vuott (Discussione | contributi) (Creata pagina con 'Un vettore è sostanzialmente un Oggetto, nella cui area di memoria sono contenuti dati del medesimo tipo, ossia che occupano la medesima quantità di memoria (tutti ''Byte'',...')

(diff) ← Versione meno recente | Versione attuale (diff) | Versione più recente → (diff)

Un vettore è sostanzialmente un Oggetto, nella cui area di memoria sono contenuti dati del medesimo tipo, ossia che occupano la medesima quantità di memoria (tutti Byte, o tutti Short, o tutti Integer, e così via).

I vettori mettono a disposizione, fra l'altro, la proprietà .Data, che restituisce un Puntatore (ossia l'indirizzo di memoria) ai dati contenuti dal vettore medesimo.

E' possibile spostandoci lungo l'area di memoria puntata da tale Puntatore secondo la quantità di memeoria occupata dal tipo di vettore (Byte[], Short[], etc), leggere i valori contenuti dalla variabile vettoriale.

Mostriamo un semplice esempio con un vettore di tipo Integer():

Public Sub Main()
 
 Dim ii As Integer[] = [2, 22, 222, 2222, 22222, 222222, 2222222]
 Dim p As Pointer
 Dim b As Byte
   
  p = ii.Data
   
  For b = 0 To ii.Max
' Dereferenziamo il puntatore per ottenere il valore contenuto dalla locazione di memoria puntata:
    Print b;; Int@(p)
' Trattandosi di un vettore di tipo "Intero", spostiamo il puntatore interno all'area di memoria
' pari al numero di byte di memoria occupata dal tipo "Intero":
    p = p + SizeOf(gb.Integer)
  Next
   
End