RE: c přižezení adresy do ukazatele
Jan Waclawek
konfera na efton.sk
Středa Duben 9 19:13:44 CEST 2014
Chapem Vas psychologicky problem, mam podobny (a je to organicka sucast
mojej nenavisti k C).
Idealne by bolo pisat zasadne typ "pointer na xxx" ako xxx* (t.j. vo Vasom
pripade
int* pyly = (int*)&Xxx;
(predpokladam, ze to velke pismeno v Int Vam tam pridal nejaky idiotsky
maniakalne autokorigujuci mailer)).
Bohuzial, vacsina ci mozno vsetky pravidla zapisu zdrojakov v C toto
zakazuju; a je na to skutocne minimalne dovod, aj ked tiez pomerne
obskurny.
Ta * sa totiz pri deklaracii viaze na deklarovanu premennu, nie na typ,
napr.
int * a, b;
je ekvivalent
int *a;
int b;
takze ak
Ak by ste chceli zadeklarovat dva pointre, tak to musi byt
int * a, * b;
Zamerne som tu hviezdicku "obklopil" medzerami.
Potom sa daju zapisovat napriklad aj zverstva typu
volatile int * const a, ** b;
co znamena "premenna a, pre ktoru prekladacu slubujem, ze ju nezmenim, je
pointer ukazujuci na int, pristup ku ktoremu prekladac nesmie
optimalizovat a musi ho vykonavat v predpisanom poradi, dalej premenna b,
ktora je pointer ukazujuci na pointer ukazujuci na int, pristup ku ktoremu
prekladac nesmie optimalizovat a musi ho vykonavat v predpisanom poradi".
Ale to, ze take nieco funguje, chapu ako vyhodu naozaj len skalni
fanuskovia C... ;-)
C99 6.7.5 resp. 6.7.5.1 (aj ked je to napisane jazykom dost pribuznym
Laponcine).
wek
----- Original Message ---------------
Subject: =?iso-8859-2?Q?RE:_c_p=F8i=BEezen=ED_adresy_do_ukazatele?=
From: "Miroslav Draxal" <evik at volny.cz>
Date: Wed, 9 Apr 2014 18:22:55 +0200
To: "'HW-news'" <hw-list at list.hw.cz>
>Tak¾e jsem to asi vyøe¹il.
>
>Int *pyly = (int*)&Xxx; (stále jsem to zkou¹el pøes (int)&Xxx;)
>
>Musím to pøevest né na typ (int) ale na ukazatel(int*)
>
>
>
>Ty ukazatele fakt nedávám. Míra
>
>
Další informace o konferenci Hw-list