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.
*i je pointer na misto v pameti, ktery si muzes nechat interpretovat jako "to je Integer". Potom ti pocitac skoci na misto pameti *i a precte z nej 2 bajty, a pokud udelas *(i + 1), tak pocitac vi, ze ma preskocit 1. 2 bajty, precist 2. 2 bajty a interpetovat je jako Integer.
Ale zrovna tak si muzes libovolne misto v pameti *i nechat interpretovat jako treba Signed char. V tom pripade ti pocitac precte z mista *i 1 bajt.
Pouzivat to muzes treba pro vyrobu vlastnich paketu, kde si muzes do array zakodovat ruzne flagy a data s ruznymi datovymi typy a ruzne delky, poslat si je do nejakeho zarizeni jako bajt hatmatilku, a v tom zarizeni si je zase rozkodovat.
No proste je to dulezite.
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.