Deklarace paměti
Při programování v nějakém vysokoúrovňovém jazyce, jako je třeba C, se proměnné
deklarují datovým typem. Tyto datové typy mohou být např. celá čísla ( integer)
nebo znaky ( character) nebo jiné, třeba i uživatelem definované struktury. Pro
tyto proměnné je nezbytné alokovat dostatečný prostor, což pro celé číslo může
být 4 bajty a pro znak třeba jeden jediný
bajt. To znamená, že celé číslo má
32 bitů místa (4 294 967 296 možných hodnot), zatímco znak má pouhých 8 bitů
místa (256 možných hodnot).
Proměnné mohou být deklarované také v poli. Pole
( array) je seznam N elementů daného datového typu. Takže v nejjednodušším
případě je desetiznakové pole prostě 10 znaků sousedících vedle sebe v paměti.
Někdy se polím říká buffer a poli znaků řetězec ( string). Protože je kopírování
velkých kusů paměti výpočetně náročné, používají se pointery ( ukazatele) pro
odkazovaní na buffer. Pointery se v Céčku deklarují připojením hvězdičky před
jméno proměnné; zde je pár příkladů deklarací proměnných:
int integer_variable;
char character_variable;
char character_array[10];
char *buffer_pointer;
Důležitý detail vztahující se k paměti na procesorech typu x86 je pořadí bajtů v
4bajtovém slovu. Toto řazení je známé pod pojmem little endian, které říká, že
nejméně signifikantní (významný) bajt je ten první. Znamená to, že bajty slova,
jakým je třeba celé číslo nebo pointer, jsou uloženy v převráceném pořadí.
Hexadecimální hodnota 0x12345678 v kódování little endian je v paměti uložena
jako 0x78 0x56 0x34 0x12. Ačkoliv kompilátory pro HLL, jakým je třeba C,
automaticky bajty řadí, je důležité si toto zapamatovat.