Qui c'è da fare attenzione:Originariamente inviato da XWolverineX
Inoltre mi stavo anche chiedendo perchè
Ci ho riflettuto è credo che sia perchècodice:char *c = "Ciao"; // Ok int *i = 10; //No
"Ciao"; è proprio un const char *
mentre 10 è un int e non un int *
Giusto?
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!!