PDA

Visualizza la versione completa : [C] Mi dite che fa questo casting di variabile?


Kylnas
24-06-2005, 12:26
Come da topic, che fa sta cosa?
int n = *((int*)arg)

grazie

eumene
24-06-2005, 13:29
int n = *((int*)arg)

Allora, chiaro che "n" di tipo intero, mentre ci che segue l'uguale un po' ostico.

"arg" probabilmente un puntatore ad un area di memoria, addirittura potrebbe essere "void* arg".

Spacco in due passi lo statement.

Il cast

int* m = (int*)arg
forza l'area di memoria a puntatore da intero, cio sto dicendo fai in modo che il contenuto dell'area di memoria puntata sia un intero. Ora m punta ad un intero. Ovvio ora il significato di

int n = *m
che assegna ad n il valore puntato da m.

Lo stesso effetto dovresti poterlo ottenere in questo modo

int n = (int)(*arg)

Tutto chiaro???

pprllo
24-06-2005, 16:41
Al 90% arg un puntatore a void.
Quello che ha postato eumene giusto.
Solo che non puoi scrivere


int n = (int)arg;

Questo ti darebbe un errore. Infatti arg solo un puntatore e quindi contiene solo il valore di un indirizzo di memoria. Quindi il risultato non avrebbe senso.
Invee devi fare per forza in quel modo, trattandolo prima come un puntatore ad integer e poi dereferenziandolo.

Loading