C koutek, přetypovávání pointrů

Libor Chocholaty libor_ml1 na mts.cz
Čtvrtek Červenec 9 16:45:34 CEST 2009


Spis by bylo zajime vedet jak je velky typ char.
Jestli 8, 16 nebo 32 bitu. Protoze pokud min nez 32, tak tim treba
davaji prekladaci najevo, ze ten ukazatel muze ukazovat i na adresy
nezarovnane na mod 4. Jsou architektury, ktere to bytostne nesnaseji,
treba Motorola M68000 mela hw vyjimku 0x03 pristup na lichou adresu
(fyzicky chybel adresni vodic A0), jine architektury pristupuji na
nezarovnane adresy vyrazne pomaleji nez na zarovnane.

Libor


Artur Kudelka wrote:
> Ahoj,
> jen hádám.  Nechtějí tím přetypováním "ořezat" adresu na spodních  16
> bitů  ?
> Ale proč, to netuším.
> Zdraví
>      Artur ------------ Původní zpráva ------------
> Od: Josef Stengl <ok1ced na nagano.cz>
> Předmět: C koutek, přetypovávání pointrů
> Datum: 09.7.2009 15:17:09
> ----------------------------------------
> Ahoj,
>
> Tak jsem  ji četl kod a nevím proč je tak napsán.
> mějme
>
>
> uint32_t var;
> uint32_t * p_point= (uint32_t *)((char *) (var));
>
> vím k čemu to slouží, jedná se o vytvoření pointru na uint32_t 
> hodnotu na adrese proměnné var.
>
> Ale, netuší někdo důvod, proč je to nejdříve přetypováno na pointer na
> char a pak na pointer na uint32_t? (Jedná se nějaký NEC a unisigned
> int jest 32 bit).
> Děkuji.
>
> ced 




Další informace o konferenci Linux