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