A uživatelsky definovaná funkce je typ funkce v jazyce C, která je definována samotným uživatelem k provedení nějaké konkrétní úlohy. Poskytuje opětovnou použitelnost kódu a modularitu našeho programu. Uživatelsky definované funkce se liší od vestavěných funkcí, protože jejich činnost určuje uživatel a pro jejich použití není vyžadován žádný hlavičkový soubor.
V tomto článku se dozvíme o uživatelsky definovaná funkce, prototyp funkce, definice funkce, volání funkce a různé způsoby, kterými můžeme předat parametry funkci.
Jak používat uživatelsky definované funkce v C?
Abychom mohli používat uživatelsky definovanou funkci, musíme nejprve porozumět různým částem její syntaxe. Uživatelem definovanou funkci v C lze rozdělit do tří částí:
- Funkční prototyp
- Definice funkce
- Volání funkce
Prototyp funkce C
Prototyp funkce je také známý jako deklarace funkce, která specifikuje název funkce, parametry funkce, a návratový typ . Prototyp funkce neobsahuje tělo funkce. V podstatě se používá k informování kompilátoru o existenci uživatelsky definované funkce, kterou lze použít v pozdější části programu.
Syntax
return_type function_name (type1 arg1 , type2 arg2 , ... typeN argN );>
Můžeme také přeskočit název argumentů v prototypu funkce. Tak,
příklad java mapy
return_type function_name (type1 , type2 , ... typeN);>

C Definice funkce
Po zavolání funkce obsahuje definice funkce skutečné příkazy, které budou provedeny. Všechny příkazy definice funkce jsou uzavřeny uvnitř { } rovnátka.
Syntax
return_type function_name (type1 arg1 , type2 arg2 .... typeN argN ) { // actual statements to be executed // return value if any }>
Poznámka: Pokud je volání funkce přítomno po definici funkce, můžeme přeskočit část prototypu funkce a přímo definovat funkci.
C Volání funkce
Abychom mohli přenést řízení na uživatelem definovanou funkci, musíme ji zavolat. Funkce jsou volány pomocí jejich jmen následovaných kulatými závorkami. Jejich argumenty jsou předány v závorkách.
Syntax
function_name(arg1, arg2, ... argN);>
Příklad uživatelsky definované funkce
Následující program v jazyce C ilustruje, jak v našem programu používat uživatelsky definované funkce.
C
// C Program to illustrate the use of user-defined function> #include> // Function prototype> int> sum(> int> ,> int> );> // Function definition> int> sum(> int> x,> int> y)> {> > int> sum;> > sum = x + y;> > return> x + y;> }> // Driver code> int> main()> {> > int> x = 10, y = 11;> > // Function call> > int> result = sum(x, y);> > printf> (> 'Sum of %d and %d = %d '> , x, y, result);> > return> 0;> }> |
>
>Výstup
Sum of 10 and 11 = 21>
Komponenty definice funkce
Definice funkce má tři součásti:
- Funkční parametry
- Tělo funkce
- Návratová hodnota
1. Parametry funkcí
Parametry funkce (také známé jako argumenty) jsou hodnoty, které volající předává volané funkci. Funkci můžeme předat žádný nebo libovolný počet parametrů funkce.
V definici funkce musíme definovat název funkce a její typ a ve volání funkce můžeme předat pouze stejný počet a typ parametrů.
java seznam prázdný
Příklad
int foo ( int a, int b) ;>
Tady, A a b jsou funkční parametry.
Poznámka: Jazyk C poskytuje metodu, pomocí které můžeme předat funkci variabilní počet argumentů. Takové funkce se nazývají variadické funkce.
2. Tělo funkce
Tělo funkce je sada příkazů, které jsou uzavřeny v { } složených závorkách. Jsou to příkazy, které se provádějí při volání funkce.
Příklad
int foo (int a, int b) { int sum = a + b; return sum; }>
Zde jsou prohlášení mezi { a } je funkce těla.
3. Návratová hodnota
Návratová hodnota je hodnota vrácená funkcí jejímu volajícímu. Funkce může vrátit pouze jednu hodnotu a je volitelná. Pokud nemá být vrácena žádná hodnota, je návratový typ definován jako void.
The vrátit klíčové slovo se používá k vrácení hodnoty z funkce.
Syntax
return ( expression );>
Příklad
int foo (int a, int b) { return a + b; }>
Poznámka: Můžeme použít ukazatele nebo struktury k vrácení více hodnot z funkce v C .
jak vrátit pole v Javě
Předávání parametrů uživatelsky definovaným funkcím
Parametry můžeme funkci v C předat dvěma způsoby:
- Volejte podle hodnoty
- Volejte podle reference
1. Volání podle hodnoty
Při volání podle hodnoty je funkce předána kopie hodnoty a změny provedené ve funkci se nepromítnou zpět do hodnot. Aktuální a formální argumenty se vytvářejí v různých paměťových místech.
Příklad
C
// C program to show use of> // call by value> #include> void> swap(> int> a,> int> b)> {> > int> temp = a;> > a = b;> > b = temp;> }> // Driver code> int> main()> {> > int> x = 10, y = 20;> > printf> (> 'Values of x and y before swap are: %d, %d
'> , x,> > y);> > swap(x, y);> > printf> (> 'Values of x and y after swap are: %d, %d'> , x,> > y);> > return> 0;> }> |
>
náhodný žádný generátor v javě
>Výstup
Values of x and y before swap are: 10, 20 Values of x and y after swap are: 10, 20>
Poznámka: Hodnoty se ve volání podle hodnoty nemění, protože nejsou předávány odkazem.
2. Volejte podle reference
Při volání odkazem je adresa argumentu předána funkci a změny provedené ve funkci se projeví zpět na hodnotách. Používáme ukazatele požadovaného typu pro příjem adresy ve funkci.
Příklad
C
// C program to implement> // Call by Reference> #include> void> swap(> int> * a,> int> * b)> {> > int> temp = *a;> > *a = *b;> > *b = temp;> }> // Driver code> int> main()> {> > int> x = 10, y = 20;> > printf> (> 'Values of x and y before swap are: %d, %d
'> , x,> > y);> > swap(&x, &y);> > printf> (> 'Values of x and y after swap are: %d, %d'> , x,> > y);> > return> 0;> }> |
večeře vs večeře
>
>Výstup
Values of x and y before swap are: 10, 20 Values of x and y after swap are: 20, 10>
Další podrobnosti naleznete v tomto článku – Rozdíl mezi voláním podle hodnoty a voláním podle reference
Výhody uživatelsky definovaných funkcí
Výhody použití funkcí v programu jsou následující:
- Je možné se vyhnout duplicitě kódu v programech pomocí funkcí. Kód lze psát rychleji a díky tomu je čitelnější.
- Kód lze dělit a dobývat pomocí funkcí. Tento proces je známý jako rozděl a panuj. Je obtížné psát velké množství kódu v rámci hlavní funkce, stejně jako testování a ladění. Náš jeden úkol lze pomocí funkcí rozdělit na několik menších dílčích úkolů, čímž se sníží celková složitost.
- Například při použití pow, sqrt atd. v C, aniž byste věděli, jak je implementováno, je možné skrýt podrobnosti implementace pomocí funkcí.
- S malými nebo žádnými úpravami lze funkce vyvinuté v jednom programu použít v jiném programu, což zkracuje dobu vývoje.