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