Scusami , Stella.
Invece io non so in C , ma nel PLC dell'esempio che ti riportavo è proprio quello classico.
Essendo stata la richiesta di chiarimenti sul puntatore in PL7 (linguaggio di programmazione dei TXS premium) se non sbaglio.
Sintassi &...registro ,scrive nel registro il valore di indirizzo dato dal tipo di area (V) in questo caso e suo numero di identificazione.
MOVD &VB1000, AC2
Scrive nel registro AC1 l'indirizzo VB1000.
E' un intero a 32 bit.
Nei PLC il dato è "finito" in formato Pointer è una D.word
Questo dato di tipo pointer, lo si può sommare o moltiplicare per un'altra costante , a proprio piacimento andando a modificare l'indirizzo dinamicamente.
Sintassi *...registro , scrive nella destinazione assegnata il valore del contenuto del dato il cui indirizzo è specificato nel registro stesso.
MOVD *AC1, AC2
Scrive nel registro AC2 l'indirizzo VB1000 contenuto nell'accumulatore AC1.
Oppure
MOVw *AC1, vw10
Scrive solo il dato contenuto nella prima word (VB1000+VB1001) nella word VW100.
Intendo dire che il dato puntatore o il registro ACx associato ad esso è un dato bi-direzionale.
Con la corretta sintassi può fornire l'informazione dell'indirizzo o il contenuto dell'indirizzo stesso.
Nel caso di dati "complessi come può essere una stringa , una matrice o array , il registro contiene solo le prime due word del dato stesso.
Per utilizzarle si usano i comandi di raggruppamento che sono BLOCKMOVE...X dove x è la lunghezza dell'area di memoria.
Scrive il contenuto a partire da VD1000 per 6 Dword , a partire da VD616 per 6 Dword a seguire.
Questa sintassi si usa nel caso le dimensioni del dato siano superiori ai 32 bit.
Spero di essere stato più chiaro.
Ciao
Ivan