Pole v C

Zdenk Materna zdenek.materna@gmail.com
Steda Listopad 26 14:39:31 CET 2008


Dne 26. listopad 2008 14:18 Pavel Troller <patrol@sinus.cz> napsal(a):

> > Zdravím,
> >
> > > Zdravím,
> > >
> > > mám takový problém v C.
> > >
> > > Ve struktuře mám deklarované pole e (zatím) pevné velikosti. Mám
> ukazatel na
> > > strukturu, ten předávám jako parametr funkci, a chci do pole ukládat
> > > hodnoty, ze kterých budu počítat klouzavý průměr. V e_arr_len je
> uložená
> > > délka pole.
> > >
> > > Takto je deklarované pole (ve struktuře):
> > >
> > > volatile int16_t e[5];
> > >
> > > Toto nefunguje:
> > >
> > > for(uint8_t i=0; i<((*m).e_arr_len-1);i++)
> > >   (*m).e[i] = (*m).e[i+1];
> > >
> Zdravím podruhé,
>  a ještě jeden postřeh: V programu se přiřazuje e_arr_len=5;
>  Pak v případě cyklu poslední průběh udělá
>  (*m).e[4] = (*m).e[5], kde tedy pravá strana je jednoznačně
> off-by-one přeteklá...
>  Nebo ne ?


To by nemělo - v  cyklu je podmínka "menší než" čili: i<((*m).e_arr_len-1

Ta -1 je tam kvůli poslednímu prvku, který se vloží až po ukončení cyklu...
Když jsem u toho, tak mi teď došlo, že si nejsem jistej, jestli jsem tam ten
poslední prvek opravdu vkládal...

No jo, občas se holt člověk musí ztrapnit :-D


>
>     S pozdravem Pavel Troller
> _______________________________________________
> HW-list mailing list  -  sponsored by www.HW.cz
> Hw-list@list.hw.cz
> http://list.hw.cz/mailman/listinfo/hw-list
>
------------- dal st ---------------
HTML příloha byla odstraněna...
URL: http://list.hw.cz/pipermail/hw-list/attachments/20081126/615ed79d/attachment-0002.htm 


Dal informace o konferenci Hw-list