Re: Adresace přes pointer
Miroslav Mraz
mrazik na volny.cz
Čtvrtek Říjen 26 13:26:43 CEST 2023
*ADATA=buf;
je v C-čku blbost. Pole musíte kopírovat pomocí cyklu for()
int16_t * ADATA=(int16_t*)&DATA;
for (int i=0; i<2; i++) ADATA[i]=buf[i];
ale memcpy() vůbec není špatný nápad.
Mrazík
On 26. 10. 23 12:41, Martin Záruba wrote:
> Tak s tím teď taky bojuji a něco dělám špatně. Mám strukturu, pro
> jednoduchost takto
>
> structtDATA {
> int16_tx;
> int16_ty;
> }DATA;
> byte buf[2];
> uint16_t ADRESA;
>
> Potřebuji do ní zapisovat tak, jako by to bylo pole, tedy jakoby x bylo
> DATA[0] a y bylo DATA[1].
>
> Napsal jsem to takto:
>
> int16_t*ADATA=(int16_t*)&DATA+ADRESA*2;
> *ADATA=buf;
> A očekával jsem, že jestliže pointer ADATA je typu int16_t, bude se to
> chovat tak, že pokud do ADRESA dám 0 zapíšou se dva byte z buf do
> proměnné x, pokud dám do ADRESA 1, zapíšou se do y.
> Ale nefunguje to. Co je blbě?
> Je mi jasné, že asi jednodušší je použít memcpy, ale já bych rád věděl,
> co dělám blbě.
>
> --
>
> Martin Záruba
>
>
> _______________________________________________
> HW-list mailing list - sponsored by www.HW.cz
> Hw-list na list.hw.cz
> http://list.hw.cz/mailman/listinfo/hw-list
Další informace o konferenci Hw-list