logo

Uživatelsky definovaná funkce v C

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í:

  1. Funkční prototyp
  2. Definice funkce
  3. 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);>
Funkční prototyp

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:

  1. Funkční parametry
  2. Tělo funkce
  3. 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:

  1. Volejte podle hodnoty
  2. 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.