Svietivost bielej diody

havraj1.edu@mail.cez.cz havraj1.edu
Středa Březen 17 14:33:05 CET 2004


Ano samozrejme, ale to prece nevadi? Naopak, muzu pristupovat na libovolne
misto pole. Jenom se jinak indexuje. Samozrejme musim vedet, co delam. Ta
ukazka na konci vaseho prispevku myslim vse vysvetluje velmi nazorne.

S pozdravem

D.Dolezal

-----Original Message-----
From: owner-hw-news@list.gin.cz [mailto:owner-hw-news@list.gin.cz]On Behalf
Of Jakub Slajs
Sent: Wednesday, March 13, 2002 4:02 PM
To: hw-news@list.gin.cz
Subject: Re: C a promenne


> Tak, tak, svata pravda. Taky se da napsat
> 
> a=*((short*)(c+i))

To se sice napsat da, ale znamena to neco uplne jineho ;-)
(Viz tez moje predchozi poznamka).

Pokud napisu:

  a=*((short*)(c+i));

tak indexuji v rozsahu charu.

Ovsem v pripade:

  a = ((short *)c)[i];

coz v pointerove aritmetice odpovida:

  a = *(((short *)c)+1);

tak indexuju v rozsahu shortu.

Napr.

    int a;
    char c[4];

    c[0] = 1;
    c[1] = 2;
    c[2] = 3;
    c[3] = 4;

    a = *((short*)(c+1));       770 = 3*256 + 2;
    a = ((short *)c)[1];        1027 = 4*256 + 3;

> Uz chapu, proc ma nekdo odpor k cecku...

Ja taky vzdyt ho tu poradne skoro nikdo neumi. Vcetne me pochopitelne. ;-))
Me se napriklad podarilo udelat nasledujici botu. Misto:

int *a = new int[10];

jsem nejakym nedopatrenim napsal:

int *a = new int(10);

tedy misto abych vytvoril pole deseti intu, tak se vytvoril jeden int ktery
se
inicializoval na hodnotu 10. Ze pak clovek pristupoval mimo rozsah pole uz
snad ani nemusim dodavat. Nejhorsi ovsem bylo, ze z pocatku  vse fungovalo
naprosto
korektne. Jak se program rozrustal tak to zrejme nekde zacalo prepisovat
dulezita data
a cele to padalo. Je jasny ze clovek nejprve hleda chybu v tom kusu kodu
ktery napsal
v dobe kdy to zaclo padat.

Nicmene v C++ neni problem si na pole napsat wrapper s pretypovanym
operatorem []
a hlidat pripadne prekroceni rozsahu indexu (za cenu rychlosti ovsem).

C je velmi silny nastroj a pokud na nej presedlate s fichtla a myslite se ze
vam
stavajici zkusenosti budou stacit, tak si brzo nabijete hubu ;-))))

J.S.

_________________________________________________________
Do You Yahoo!?
Get your free @yahoo.com address at http://mail.yahoo.com





Další informace o konferenci Hw-list