Originariamente inviato da XWolverineX
Inoltre mi stavo anche chiedendo perchè

codice:
char *c = "Ciao"; // Ok
int *i = 10; //No
Ci ho riflettuto è credo che sia perchè
"Ciao"; è proprio un const char *
mentre 10 è un int e non un int *
Giusto?
Qui c'è da fare attenzione:

char *c = "Ciao";
significa assegnare alla variabile 'c' (puntatore a char) l'indirizzo del primo carattere della stringa literal. E questo è ok.

int *i = 10;
significa assegnare alla variabile 'i' (puntatore a int) l'indirizzo 10!!
A parte il fatto che se proprio si volesse fare una cosa del genere, si dovrebbe mettere un cast esplicito:
int *i = (int*) 10;

infatti 10 viene valutato come valore intero, non come un indirizzo.
Ma comunque, quasi sicuramente, non sarebbe corretto lo stesso. Nei moderni sistemi operativi, l'indirizzo 10 non è di certo una locazione accessibile!!