Úvod do funkcí C

Úvod do funkcí C
Čtenáři jako vy pomáhají podporovat MUO. Když provedete nákup pomocí odkazů na našich stránkách, můžeme získat provizi přidružené společnosti. Přečtěte si více.

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?

  Obrazovka zobrazující kód v programovacím jazyce

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