Pole v C
Zdeněk Materna
zdenek.materna@gmail.com
Středa 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