Lo so: char * è un puntatore al carattere. e int * è un puntatore a int.La dimensione del carattere * è uguale alla dimensione di int *?
Quindi, voglio confermare seguenti due cose:
Supponiamo ora sono su una macchina a 32 bit, quindi questo significa che gli indirizzi di memoria sono a 32 bit di larghezza. Ciò significa che la dimensione di char * e int * è sia di 32 bit (4 byte), giusto? Anche la dimensione del carattere * * è uguale alla dimensione di int *?
supponiamo di avere: int * ptr;
Così ora sta facendo * ((ptr char * *)) = 0x154 è uguale a * ((int *) PTR) = 0x514 stesso, giusto? (0x514 è un qualsiasi indirizzo di memoria casuale)
Piattaforma: I am on x86.
P.S .: so che il casting di tipi non è un modo consigliato di codificare. Ma sto facendo la codifica del kernel, quindi DEVO fare casting di tipo!
Anche se lo standard non lo dice, dubito che sarà facile trovare un ambiente in cui sia effettivamente diverso. – Mysticial
Mentre le loro dimensioni sono le stesse nella pratica, i loro requisiti di allineamento non lo sono. – DCoder
Se si sta eseguendo "codifica del kernel", questo limita già il numero di piattaforme su cui il codice può essere eseguito. Verifica con le specifiche del sistema operativo cosa è supportato. –