l'asterisco lo usi quando vuoi accedere alla variabile alla quale punta il puntatore, invece noi dobbiamo assegnare al puntatore l'indirizzo di memoria (anteponendo & alla variabile ottengo l'indirizzo di memoria)
codice:
p = &i; //a p assegno l'indirizzo di memoria
qui infatti assegnamo a ciò che punta p il valore tre (equivale ad assegnare 3 alla variabile i)
qui assegno a j il valore che ha i, come hai detto tu. la & si mette quando si vuole avere l'indirizzo di memoria.
codice:
j = *p; //qua equivale a j=i ma xkè j nn ha l'&!?!?!? nn capsico!!!
spero di averti chiarito le idee