Visualizzazione dei risultati da 1 a 3 su 3
  1. #1

    [C] Mi dite che fa questo casting di variabile?

    Come da topic, che fa sta cosa?
    int n = *((int*)arg)

    grazie

  2. #2
    codice:
    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
    codice:
    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
    codice:
    int n = *m
    che assegna ad n il valore puntato da m.

    Lo stesso effetto dovresti poterlo ottenere in questo modo
    codice:
    int n = (int)(*arg)
    Tutto chiaro???

  3. #3
    Utente di HTML.it
    Registrato dal
    Dec 2003
    Messaggi
    423
    Al 90% arg è un puntatore a void.
    Quello che ha postato eumene è giusto.
    Solo che non puoi scrivere
    codice:
    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.

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.