PDA

Visualizza la versione completa : [C] Cast da/a void*


antotan
29-03-2010, 17:18
Salve, il seguente codice:



void f(void* x)
{
int y = (int)x;
printf("%d\n", y);
}

int main()
{
int x = 1;
f((void*)x);
}


non dovrebbe creare problemi, giusto?
Il compilatore non dice nulla e il programma funziona e, da quanto ho capito, posso usare il void* per indicare una qualsiasi cosa (puntatore e non). Correggetemi se sbaglio.

Invece cosa succede se faccio così?



void f(void* x)
{
int y = (int)x;
printf("%d\n", y);
}

int main()
{
f((void*)1);
}


cioè utilizzando direttamente una costante? Può crearmi problemi in qualche maniera, nonostante il compilatore non mi segnali nulla e il programma funzioni?

shodan
29-03-2010, 18:11
da quanto ho capito, posso usare il void* per indicare una qualsiasi cosa (puntatore e non)

L'unica cosa illegale è castare a void* un puntatore a funzione, il resto è ammesso.



Invece cosa succede se faccio così?
...


Beh, sono costanti. Finche non cerchi di modificarle non hai problemi.

antotan
29-03-2010, 19:45
Ottimo. Grazie mille!

:ciauz:

Loading