Ciao a tutti, nel libro che sto leggendo non riesco a capire i puntatori.

come nel esempio:

codice:
int a=3; // Variabile 
int *x; // ''Puntatore'' ad una variabile di tipo int 
x=&a; // Il puntatore ''x'' contiene l'indirizzo della variabile ''a'' 
*x=4; // In questo modo modifico il contenuto del valore puntato
 // da x, quindi modifico indirettamente il valore di a
non capisco bene a cosa serve *, da quanto ho capito serve per scrivere uno spazio nella memoria ram giusto?
mentre da quello che ho capito & serve per sapere dove è salvato un dato nella memoria, diciamo per recuperarlo.

fino a qui è giusto?

Non capisco l'esempio, io lo vedo cosi,
1 dichiara variabile
2 crea una variabile con il puntatore e quindi viene salvata sulla memoria ram ( invece a non è salvata in nessuna memora in questo punto del codice?)
3 questo passaggio non lo capisco molto bene, da quello che ho capito a viene trasferita nello stesso spazio di memoria di x.
4 quindi se modifico x che è il puntatore modifico anche a?


Qualcuno potrebbe spiegarmi bene i puntatori? non riesco proprio a capire il funzionamento, è stata la parte piu difficile fino ad ora.

Grazie per l'attenzione