Funkce představuje ucelenou část programu, která se dá opakovaně volat z jiných částí programu. Funkce má přiřazený vlastní identifikátor, vstupní parametry a typ návratové hodnoty.
Nejzákladnější dva typy funkcí jsou:
Deklaraci funkce provádíme na globální úrovni souboru se zdrojovým kódem. To znamená na stejné úrovni, jako je definovaná funkce main. Funkce musí být vždy deklarována před tím, než dojde k jejímu volání (zdrojový kód se zpracovává shora dolů). Funkci nelze deklarovat uvnitř jiné funkce.
Deklaraci funkce lze rozdělit na 2 základí části:
V některých případech je možné provést dopřednou deklaraci hlavičky funkce a implementaci uvést až později ve zdrojovém kódu. Viz příklady.
Hlavička funkce definuje:
Tělo je tvořeno vlastním kódem funkce/procedury ve složených závorkách (blok). Pokud se jedná o funkci, která má definovaný jiný typ návratové hodnoty než void, tak musí všechny možné průchody danýmkódem končit voláním return hodnota;, kde datový typ hodnoty musí odpovídat typu návratové hodnoty v hlavičce.
typ_návratové_hodnoty identifikátor(typ param1, typ param2, ...) { // Tělo funkce prikaz1; prikaz2; ... return hodnota; }
Funkce se volá svým identifikátorem, za kterým následuje kulatá závorka se seznamem skutečných parametrů. Pokud funkce vrací výsledek (není typu void), je po jejím vykonání nahrazeno volání výsledkem.
identifikátor(param1, param2, ...);
// Hlavička souboru double absolutniHodnota(double cislo) { if (cislo < 0) return -cislo; return cislo; } int main(int argc, char *argv[]) { double vysl = absolutniHodnota(-42.5); printf("%f\n", vysl); }
// Hlavička souboru void pozdrav() { puts("Ahoj"); } int main(int argc, char *argv[]) { pozdrav(); }