Domanda

mi sono imbattuto in una linea che segue,

           char *ch=(char*)3000

Vorrei sapere il significato di questa linea .....

Nessuna soluzione corretta

Altri suggerimenti

Sembra che il puntatore, ch, viene assegnato un indirizzo di memoria assoluto 3000. In generale una pessima idea, a meno che non si sta lavorando su un sistema embedded senza paginazione e si sa esattamente Da alla locazione di memoria 3000.

Forse vedendo il resto del codice sarebbe rilevante ...

Questo puntatore potrebbe essere relativo al segmento in cui risiede (su processori Intel). In questo caso il 3000 potrebbe essere semplicemente un indice in quel segmento, definito in precedenza nel programma, dove non abbiamo le linee.

Questo dipende l'architettura del sistema, l'ambiente, il sistema operativo, il compilatore, il resto del codice (e il programmatore ...).

Non è ovvio?

Il valore numerico "3000" è fuso a un puntatore char, cioè ch viene inizializzato nella memoria di 3000 (decimale).

Per quanto ne sappia, 3000 è alcun indirizzo / valore speciale, e nella maggior parte dei casi l'accesso sarebbe risultato in segmentation fault o un valore di immondizia.

Se vedete che nel codice, può essere che viene utilizzato in modo non corretto al posto di un (* void), ad esempio nel caso di mappe in cui si hanno coppie di valori chiave, il risultato può essere gettato in un numero intero in questo caso.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top