Pochopeni toho proc i[j] je totozne s *(i + j) je naprosto elementarni znalost a doporucuju to pochopit dobre a zapamatovat si to, tyka se to toho jak funguje sprava pameti v C.
A kdyz tak o tom mluvim, tak mam taky dotaz: jak podobu ma v pameti structur? Tipuju ze je to vlastne bajt array, ktere dodrzuje order promennych definovanych ve structure. Tzn. ze si muzu pres pointer na struct jednotlive promenne vytahovat.
Ad 1: Pointerovou aritmetiku bych fakt správou paměti nenazýval.
Ad 2: Tipovat si nemusíte, není to žádná tajná informace. A tipujete si špatně. Ve výchozím stavu to zaručené nemáte. https://fresh2refresh.com/c-programming/c-structure-padding/
A proc bych si nemohl tady na foru tipnout, kdyz je to tak uzitecne? Vem si, tipnul jsem si, a nejaky verny otrok me hned opravil a dal mi i odkaz, kde si muzu precist jak to je. A nestalo me to ani tolik praci. Tak proc si v diskuzi cas od casu netipnout?
A pointrova aritmetika, ok, tak neni to sprava pameti, ale je to jednoznacne o tom, jak funguje prace s pameti v jazyce C.
Takze ted vim, ze kdyz si chci zakodovat data do paketu a poslat si je do nejakeho zarizeni, tak na to nemam pouzivat struct, ale bajt array, jako jsem to vzdycky delaval. Takze jsem to delal dobre.
Jo ale mozna pres tu pragmu uz by to slo no:
#pragma pack(1)
struct structure1
{
int id1;
int id2;
char name;
char c;
float percentage;
};
Coz mi pripomina ozehavy problem v kompatibilitie mezi little endianem a big endianem mezi ruznymi zarizenimi. No, jeste ze uz v C nedelam a na Arduino uz nikdy cas mit nebudu...