Re: Adresace přes pointer

Martin Záruba swz na volny.cz
Čtvrtek Říjen 26 13:30:24 CEST 2023


Dík. Zase jsem ten kompilátor přecenil. Já myslel, že když mu řeknu, že 
pointer je na dvoubytovou proměnnou, tak pokud jej použiji, bude vědět, 
že má pracovat s dvěma byte.

Martin Záruba

Dne 26.10.2023 v 13:26 Miroslav Mraz napsal(a):
> *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
> _______________________________________________
> HW-list mailing list  -  sponsored by www.HW.cz
> Hw-list na 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/20231026/6ef88dcc/attachment.htm>


Další informace o konferenci Hw-list