Funkce v jazyce C a C++

11-Funkce

Stavba a vlastnosti

hlavička fce, tělo (stavba jako v main, deklarace nejprve v C, C++ kdekoliv, musí mít return kromě void) kam se píše funkce do 1 modulu před main hlavičky do více PArametry předávané hodnotou skutečný, ten kdy voláme formální, odkazem / hodnotou vezmou si ze skutečných hodnotu, nemůže je přepsat odkazem pointer na proměnnou, stejnou fci obsluhujeme ze 2 míst, nemůžou se jmenovat stejně nemusí mít fce parametr - void Rekurzivní volá sama sebe faktoriál rekurzí px zavolá se ještě předtím než skončí běh, ukončuje podmínka rekurze je náročná na paměť, ale krátký kód, lze zapsat cykly (některé programovací jazyky to neznají, tak proto se to učíme) přetěžování fcí jenom v C++ fce se stejně jmenuje, ale musí mít jiný počet nebo datové typy parametru

Funkce vyjadřují dílčí algoritmy — podprogramy. Chceme-li v programu nějakou funkci použít, musíme ji nejprve deklarovat. Podobně jako v ostatních případech rozlišujeme definiční a informativní deklaraci; informativní deklaraci obvykle nazýváme prototyp. Aby mohl překladač přeložit volání funkce, stačí, když zná její prototyp; definiční deklarace může být někde jinde.
Obě bychom je mohli popsat takto:

definice.funkce:
   hlavička_funkce tělo
prototyp:
   hlavička_funkce ;
hlavička_funkce:
   deklarační_specifikátorynenep deklarátor_funkce specifikace_výjimeknep

Vzhledem k tomu, že se zabýváme pouze volnými funkcemi, vynechali jsme v popisu hlavičky funkce možnost použití cv-kvalifikátorů, neboť ty lze užít pouze pro metody.
Příklad:

int f1(double, double); 
void *f2(int); 
int (*f3()) [10]; 
long (*f4(char)) ();

Funkce f1() má dva parametry typu double a vrací hodnotu typu int. Funkce f2() má jeden parametr typu int a vrací ukazatel bez doménového typu (tj. void*). Funkce f3() je bez parametrů a vrací ukazatel na pole deseti hodnot typu int; f4() má jeden parametr typu char a vrací ukazatel na funkci typu long bez parametrů.
Všimněte si, že v deklarátoru funkce stojí vždy bezprostředně za identifikátorem funkce závorky se seznamem formálních parametrů. Specifikace formálních parametrů v deklaraci funkce se podobá deklaraci proměnných, až na to, že každý formální parametr musíme specifikovat zvlášť a parametry mohou mít pouze paměťovou třídu auto nebo register. Jména parametrů můžeme za jistých okolností vynechat. Specifikace jednotlivých parametrů oddělujeme čárkami. Deklarace funkce může také specifikovat výpustku).
Chceme-li deklarovat funkci bez parametrů, použijeme buď klíčové slovo void nebo prázdné závorky. Obě možnosti jsou v C++ ekvivalentní:

int f(); // Obojí znamená v C++ totéž 
int f(void);

jsou prototypy téže funkce f() bez parametrů.
Specifikace_výjimek specifikuje typy výjimek, které se mohou z dané funkce rozšířit. Má tvar:

specifikace_výjimek:
   throw()
   throw( seznam_identifikátorů )

Parametry

Rekurzivní

Přetěžování