Vorrei capire attraverso alcuni esempi del linguaggio di programmazione C come avviene l’indirizzamento della memoria.

Uno degli scopi dei linguaggi
di programmazione cosiddetti ad “alto livello”
consiste nel “mascherare” molti dei meccanismi di funzionamento del computer
utilizzato consentendo al programmatore di esprimere il proprio programma utilizzando
concetti e tecniche più vicine al “modo di ragionare” umano.

In particolare il linguaggio C non utilizza direttamente tecniche di indirizzamento
della memoria ma, al pari degli altri linguaggi analoghi, introduce il
concetto di variabile.

Una variablie è sostanzialmente un oggetto che ha un nome, assegnato dal
programmatore, e altre caratteristiche; ad esempio il tipo (che indica il tipo di
valori che la variabile può contenere).

Noi sappiamo che la variabile è in realtà associata ad una
particolare zona della memoria, ma per usarla correttamente non abbiamo
nessun bisogno di sapere dove essa
si trovi nella memoria, né come la CPU riesca ad accedere al
contenuto della memoria.

Consideriamo ad esempio la seguente istruzione scritta in linguaggio C:


a=1;

Per eseguirla il programma dovrà accedere alla memoria
nella posizione dove è memorizzato il valore 1 e quindi trasferire
il contenuto nella posizione di memoria associata alla variabile di nome a.
Ma nello scrivere il programma il programmatore non ha nessun bisogno di sapere
che cosa davvero accade durante l’esecuzione: è sufficiente
per lui sapere che, dopo l’esecuzione dell’istruzione, la variabile a
avrà assunto il valore 1.

Quindi la domanda così come è formulata non ha molto senso
quando si parla di linguaggi ad alto livello. Si dovrebbe invece chiedere:
“quali sono le strutture
dati definite dal linguaggio C e come si utilizzano”. E la risposta va cercata
in un manuale di programmazione.