[elektro] C kérdés
Papp Zoltán
zombi at c2.hu
Thu Jan 31 23:07:27 CET 2008
2008.01.31. 23:02:56 dátumon Papp Zoltán <zombi at c2.hu> írta:
> 2008.01.31. 22:44:38 dátumon Hofferek Attila <hofi at soka.co.hu> írta:
>
>> Papp Zoltán írta:
>>> A kedvencem: ha van egy x[] tömbünk, akkor tulajdonképpen az 'x'-t a
>>> fordító mutatóként kezeli, így az:
>>> i=x[3] megegyzik az i=*(x+3) kifejezéssel, ami megegyezik az i=*(3+x)
>>> kifejezéssel, ami így is írható: i=3[x]
>>> És tényleg működik :-)
>>
>> Ez kizárólag sizeof(typeof(x)) = 1 esetén.
>
> Nem, mert az x-et, mint típus-pointert kezeli, tehát ha hozzáadunk 3-at,
> akkor asm-ben 3*sizeof(typeof(x))-et ad hozzá.
Még valami, ha nem így lenne, akkor egy 1-bájtnál nagyobb méretű adatra
mutató mutatónál sem működne a p++; kifejezés.
Sőt, ha azt akarod, hogy pl. int (mondjuk legyen sizeof(int)=2) típusú
tömbnél 3-al növekedjen a cím, akkor ezt kell alkalmaznod:
i=*((char*)x+3)
Üdv
--
Papp Zoltán
OneWay Electronics - www.onewayelectronics.hu
Hangszerviz - www.hangszerviz.hu
More information about the Elektro
mailing list