Volání funkcí
Aby se funkce provedla, musíte ji zavolat: napíšete její název, za něj závorky a středník. Volání funkce je příkaz. Funkce voláte z těla main:
#include <stdio.h>
void pozdrav(void) {
printf("Ahoj!\n");
printf("Hezký den!\n");
}
int main(void) {
pozdrav();
return 0;
}Tento program vypíše:
Ahoj!
Hezký den!Když program při provádění main narazí na volání funkce, skočí do funkce a provede její tělo shora dolů. Pak se vrátí a pokračuje příkazem za voláním. Funkci můžete zavolat, kolikrát chcete:
#include <stdio.h>
void pozdrav(void) {
printf("Ahoj!\n");
}
int main(void) {
printf("Začátek\n");
pozdrav();
pozdrav();
printf("Konec\n");
return 0;
}Tento program vypíše:
Začátek
Ahoj!
Ahoj!
KonecProgram začne v main: vypíše Začátek, dvakrát provede tělo funkce pozdrav a nakonec vypíše Konec. Funkce, kterou nikdo nezavolá, se neprovede nikdy.
Volání funkcí pro vás vlastně není nic nového. I printf je funkce a každé printf("Ahoj!\n");, které jste napsali, je volání: název funkce, závorky a středník. Stejně tak strlen(jmeno) nebo toupper(pismeno) z lekce o řetězcích. Tyto funkce za vás napsal někdo jiný. Jak se o nich překladač dozví, uvidíte později v této lekci.
Pozor na dvě časté chyby:
- Chybějící závorky.
pozdrav;bez závorek funkci nezavolá. Program se přeloží, ale funkce se neprovede a nic nevypíše. - Jiný název. Název ve volání musí být přesně stejný jako v definici, včetně velkých a malých písmen. Když v prvním programu volání změníte na
Pozdrav();, program se nepřeloží a chybová hláška začíná takto:
main.c:9:5: error: call to undeclared function 'Pozdrav'; ISO C99 and later do not support implicit function declarations [-Wimplicit-function-declaration]
9 | Pozdrav();
| ^
main.c:9:5: note: did you mean 'pozdrav'?„Call to undeclared function“ znamená, že program volá funkci, kterou překladač nezná (undeclared, tedy neohlášenou). Zbytku prvního řádku porozumíte v dalším cvičení. Řádek s note (poznámka) je užitečná rada: nemysleli jste pozdrav?
Jak psát:
Pokyny
V main zavolejte funkci vypis_gratulaci místo obou komentářů. Program pak vypíše totéž co dlouhý program v minulém cvičení, ale main je mnohem kratší.
Hra dostane třetí úroveň. Na konci main, před return 0;, vypište Úroveň 3 dokončena a ještě jednou zavolejte vypis_gratulaci.
Do těla funkce vypis_gratulaci přidejte mezi Výborně! a poslední řádek ještě jeden příkaz, který vypíše Získali jste hvězdu. Program spusťte: zpráva se změnila po všech třech úrovních. Kód jste změnili na jednom místě a všechna tři volání dělají něco nového. Přesně k tomu jsou funkce dobré.
Začněte programovat zdarma
2/12