Možná jste probrali základní syntaxi jazyka C pomocí jednoduchých příkladů a nyní přemýšlíte, jak postupovat při vytváření větších programů v reálném světě. Pro začátek budete chtít uspořádat svůj kód do účinných částí s minimem opakování. V C, stejně jako ve většině jazyků, je odpovědí na vaše problémy funkce.
MUO Video dne POKRAČOVÁNÍ V OBSAHU POKRAČUJTE PŘEJÍMÁNÍM
Vytváření a používání funkcí v C je jednoduché a přináší mnoho výhod. Funkce umožňují rozdělit složité programy na menší části. Poskytují opětovné použití, a to jak v rámci vašeho původního programu, tak v souvisejících knihovnách nebo jiných samostatných programech.
jak získat wifi bez připojení k internetu
Chcete-li začít, budete se muset dozvědět o deklaracích funkcí, prototypech, parametrech a příkazech return.
Co jsou funkce v C?
V programování C , funkce je pojmenovaná část kódu, která něco udělá, když ji o to požádáte. Pomáhá udržovat váš kód uspořádaný a umožňuje vám použít stejnou akci vícekrát, aniž byste se opakovali.
Nejjednodušší příklad je ten, který jste již používali: funkce main(). Funkce main je obzvláště speciální, protože funguje jako hlavní vstupní bod pro jakýkoli program v jazyce C. Můžete také použít funkce knihovny, což jsou ty, které již napsal někdo jiný, nebo můžete napsat své vlastní uživatelsky definované funkce.
Funkce: Deklarace, Definice a Volání
Tyto tři aspekty jsou pro použití funkcí zásadní.
Deklarace funkce
To poskytuje informace o názvu funkce, návratovém typu a parametrech, což umožňuje její použití před její úplnou definicí. Říká se mu také funkční prototyp. Řídí se touto jednoduchou syntaxí:
return_type function_name(parameters);
Kde:
- návratový_typ je datový typ hodnoty, kterou funkce vrací. Může to být jakýkoli platný datový typ C nebo prázdnota pokud funkce nevrací hodnotu.
- název_funkce je název, který funkci přiřadíte. Toto použijete k pozdějšímu volání funkce.
- parametry je seznam vstupních parametrů, které funkce přijímá, pokud existují. Každý parametr se skládá z datového typu, za kterým následuje název parametru oddělený čárkami.
Zde je například jednoduchá deklarace funkce:
int add(int a, int b);
Definice funkce
Když zavoláte funkci, spustí kód určený v její definici. Zahrnuje název funkce, návratový typ, seznam parametrů a příkazy, které definují její chování. Zde je syntaxe:
return_type function_name(parameters) {
// Function body - code that defines what the function does
// Return a value if applicable
return value;
}
Pojďme si rozebrat části syntaxe:
Funkční tělo : Toto je blok kódu uzavřený ve složených závorkách {} . Obsahuje instrukce, které definují, co funkce dělá, když je volána.
Návratové prohlášení : Pokud má funkce návratový typ jiný než prázdnota , vrátit se příkaz odešle hodnotu zpět volajícímu. Tato hodnota by se měla shodovat se zadaným návratovým typem.
Zde je jednoduchý příklad definice funkce:
int add(int a, int b) {
int sum = a + b;
return sum;
}
Volání funkce
Stejně jako u vaření můžete mít recept (definici funkce) a některé ingredience (argumenty), ale stále musíte postupovat podle pokynů, abyste dosáhli výsledku. Volání funkce spustí funkci s danými argumenty; zde je syntaxe:
return_type result = function_name(arguments);
argumenty : Toto jsou hodnoty nebo výrazy, které předáte funkci jako vstupy. Každý argument oddělte čárkou. Počet, pořadí a datové typy argumentů by měly odpovídat seznamu parametrů funkce.
výsledek : Pokud má funkce návratový typ jiný než prázdnota , můžete zachytit vrácenou hodnotu pomocí proměnné odpovídajícího datového typu.
Zde je příklad volání funkce:
#include <stdio.h>
// Function prototype
int add(int a, int b);
int main() {
int x = 5, y = 3;
// Call the function and store the result in 'sum'
int sum = add(x, y);
printf("The sum of %d and %d is %d\n", x, y, sum);
return 0;
}
// Function definition
int add(int a, int b) {
return a + b;
}
Dodržením těchto tří kroků – deklarací funkce, poskytnutím její implementace a jejím voláním s vhodnými argumenty – můžete efektivně používat funkce k provádění různých úkolů ve vašem programu.
Parametry funkcí a návratové hodnoty
Parametry jsou proměnné deklarované v deklaraci nebo definici funkce, které fungují jako zástupné symboly pro hodnoty předané funkci při volání. Umožňují vám předávat data do funkce a umožňují jí s těmito daty pracovat a manipulovat s nimi. Návratové hodnoty jsou hodnoty, které funkce vytvoří a odešle zpět volajícímu.
Existují dva způsoby předávání parametrů.
Projděte kolem hodnoty
Při tomto přístupu volání funkce zkopíruje hodnotu skutečného argumentu do parametru funkce. Změny provedené v parametru ve funkci nemají vliv na původní argument.
Například:
#include <stdio.h>
int square(int num) {
num = num * num;
return num;
}
int main() {
int x = 5;
int y = square(x);
// Output: x and y after function call: 5 25
printf("x and y after function call: %d %d\n", x, y);
return 0;
}
- Čtvercová funkce přebírá celočíselný parametr, na jednom .
- Funkce square vypočítá druhou mocninu num, aktualizuje její hodnotu a vrátí tuto novou hodnotu.
- Hlavní funkce deklaruje celočíselnou proměnnou, X a přiřadí mu hodnotu 5.
- Poté zavolá čtvercovou funkci a předá jí hodnotu x. Přiřadí výsledek druhé proměnné, a .
- Po volání funkce main vypíše hodnoty x a y. Hodnota x zůstává stejná, protože změna parametru num uvnitř čtverce neovlivní původní x.
Pass by Reference
Pomocí tohoto přístupu předáte funkci paměti adresu (ukazatel) hodnoty. Změny provedené v parametru uvnitř funkce ovlivní původní hodnotu mimo ni.
Ukazatele, včetně jejich použití jako parametrů, jsou jedním z aspektů C, které jej odlišují od jazyka, jako je Python .
#include <stdio.h>
void square(int *num) {
*num = *num * *num;
}
int main() {
int x = 5;
square(&x);
// Output: x after function call: 25
printf("x after function call: %d\n", x);
return 0;
}
- The náměstí funkce bere celočíselný ukazatel ( int * ) parametr, na jednom . Nevrací hodnotu.
- Funkce square vypočítá druhou mocninu hodnoty, která na jednom obsahuje a aktualizuje tuto hodnotu pomocí operátoru dereference ukazatele, * .
- The hlavní funkce deklaruje celočíselnou proměnnou, X , a přiřadí mu hodnotu 5 .
- Poté zavolá náměstí funkce s ukazatelem na X pomocí adresy operátora: &X .
- Po volání funkce main vypíše hodnotu X , což je nyní 25 od změn na *na jednom uvnitř náměstí funkce ovlivnit originál X .
Stručně řečeno, klíčový rozdíl mezi těmito dvěma metodami je v tom, jak změny parametru uvnitř funkce ovlivňují původní hodnotu mimo ni. Pass by value vytváří kopii, zatímco pass by reference (ukazatel) umožňuje přímou manipulaci s původní hodnotou.
přenos hudby z iPodu na iTunes zdarma