User Manual
73
4.4.9. Pole, řetězce, ukazatele...
Na vysvětlení čeká ještě velké množství dalších zajímavostí programovacího jazyka C, ale
podrobnosti necháme na studium dostupné literatury!
Většina ukázkových programů je srozumitelná bez dalšího studování. Ve zbývající části tohoto
stručného kurzu popíšeme pouze krátký přehled několika příkladů a konceptů, které
samozřejmě nejsou příliš podrobné.
Nejprve probereme pole. Pole vám umožňuje uložit předem definovaný počet prvků se stejným
datovým typem. Následující vzorek pole se může použít k uložení 10 byte:
uint8_t myFavouriteArray[10];
Na jediném řádku jsme deklarovali 10 proměnných se stejným datovým typem, které mohou být
adresovány indexem:
myFavouriteArray[0] = 8;
myFavouriteArray[2] = 234;
myFavouriteArray[9] = 45;
Každý prvek pole může být chápán jako standardní proměnná.
Pozor: index vždy začíná od 0 a deklarace pole obsahuje n prvků – z toho plyne rozsah indexu
od 0 do n-1! Ukázkové pole poskytuje 10 prvků s indexy od 0 do 9.
Pole jsou velmi užitečná pro ukládání většího počtu proměnných se stejným datovým typem a
může se s nimi snadno manipulovat v cyklech:
uint8_t i;
for(i = 0; i < 10; i++)
writeInteger(myFavouriteArray[i],DEC);
Předchozí úryvek kódu vytvoří výstup všech prvků pole (v tomto případě bez oddělovačů a
odsazení řádků). Velmi podobný cyklus se může použít pro naplnění pole hodnotami.
V jazyku C jsou řetězce obslouženy velmi jednoduchým konceptem. Standardní řetězce budou
tvořit ASCII znaky, které pro každý znak zabírají jeden byte. Nyní se v jazyku C řetězce
jednoduše definují jako pole, která můžeme chápat jako pole znaků. Tento koncept umožňuje
definovat a ukládat do paměti předem sestavený řetězec "abcdefghijklmno":
uint8_t aSetOfCharacters[16] = "abcdefghijklmno";
Dříve probrané ukázkové programy vždy obsahovaly několik funkcí UART pro výstup řetězců
přes sériové rozhraní. Základem těchto řetězců jsou pole. Nepracuje se však s celým polem.
Tyto funkce se budou pouze vázat na adresu prvního prvku v poli. Proměnná, která obsahuje
adresu tohoto prvního prvku, se nazývá “ukazatel”. Můžeme vytvořit ukazatel na požadovaný
prvek pole zapsáním &MyFavouriteArray[x], kde x odkazuje na indexovaný prvek. Několik
takových výrazů můžeme najít v ukázkových programech, tj.:
uint8_t * PointerToAnElement = &aCharacterString[4];
Na této úrovni však nemusíme zcela zvládnout tento koncept, přesto porozumíte většině
ukázkových programů nebo psaní vlastních programu.