Funkcje C ++

Funkcja to grupa instrukcji, które razem wykonują zadanie. Każdy program w C ++ ma co najmniej jedną funkcję, którą jestmain(), a wszystkie najbardziej trywialne programy mogą definiować dodatkowe funkcje.

Możesz podzielić swój kod na osobne funkcje. To, w jaki sposób podzielisz swój kod na różne funkcje, zależy od Ciebie, ale logicznie jest to taki podział, że każda funkcja wykonuje określone zadanie.

Funkcja declarationinformuje kompilator o nazwie funkcji, typie zwracanym i parametrach. Funkcjadefinition dostarcza rzeczywistą treść funkcji.

Biblioteka standardowa C ++ zapewnia wiele wbudowanych funkcji, które program może wywołać. Na przykład functionstrcat() aby połączyć dwa ciągi, function memcpy() aby skopiować jedną lokalizację pamięci do innej lokalizacji i wiele innych funkcji.

Funkcja jest znana pod różnymi nazwami, takimi jak metoda, podprogram, procedura itp.

Definiowanie funkcji

Ogólna postać definicji funkcji C ++ jest następująca -

return_type function_name( parameter list ) {
   body of the function
}

Definicja funkcji C ++ składa się z nagłówka funkcji i treści funkcji. Oto wszystkie części funkcji -

  • Return Type- Funkcja może zwrócić wartość. Plikreturn_typejest typem danych wartości zwracanej przez funkcję. Niektóre funkcje wykonują żądane operacje bez zwracania wartości. W tym przypadku return_type jest słowem kluczowymvoid.

  • Function Name- To jest rzeczywista nazwa funkcji. Nazwa funkcji i lista parametrów razem tworzą podpis funkcji.

  • Parameters- Parametr działa jak symbol zastępczy. Gdy funkcja jest wywoływana, przekazujesz wartość do parametru. Ta wartość jest określana jako rzeczywisty parametr lub argument. Lista parametrów odnosi się do typu, kolejności i liczby parametrów funkcji. Parametry są opcjonalne; to znaczy, funkcja może nie zawierać żadnych parametrów.

  • Function Body - Treść funkcji zawiera zbiór instrukcji, które definiują, co robi funkcja.

Przykład

Poniżej znajduje się kod źródłowy funkcji o nazwie max(). Ta funkcja przyjmuje dwa parametry num1 i num2 i zwraca największy z nich -

// function returning the max between two numbers
 
int max(int num1, int num2) {
   // local variable declaration
   int result;
 
   if (num1 > num2)
      result = num1;
   else
      result = num2;
 
   return result; 
}

Deklaracje funkcji

Funkcja declarationinformuje kompilator o nazwie funkcji i sposobie wywołania funkcji. Rzeczywistą treść funkcji można zdefiniować oddzielnie.

Deklaracja funkcji składa się z następujących części -

return_type function_name( parameter list );

Dla wyżej zdefiniowanej funkcji max (), poniżej znajduje się deklaracja funkcji -

int max(int num1, int num2);

Nazwy parametrów nie są ważne w deklaracji funkcji tylko ich typ jest wymagany, więc poniżej znajduje się również poprawna deklaracja -

int max(int, int);

Deklaracja funkcji jest wymagana, gdy definiujesz funkcję w jednym pliku źródłowym i wywołujesz tę funkcję w innym pliku. W takim przypadku powinieneś zadeklarować funkcję na początku pliku wywołującego funkcję.

Wywołanie funkcji

Tworząc funkcję w C ++, podajesz definicję tego, co ta funkcja ma robić. Aby użyć funkcji, będziesz musiał wywołać lub wywołać tę funkcję.

Gdy program wywołuje funkcję, sterowanie programem jest przekazywane do wywoływanej funkcji. Wywołana funkcja wykonuje zdefiniowane zadanie i po wykonaniu jej instrukcji return lub po osiągnięciu jej zamykającego nawiasu zamykającego zwraca sterowanie programem z powrotem do programu głównego.

Aby wywołać funkcję, wystarczy przekazać wymagane parametry wraz z nazwą funkcji, a jeśli funkcja zwraca wartość, można ją zapisać. Na przykład -

#include <iostream>
using namespace std;
 
// function declaration
int max(int num1, int num2);
 
int main () {
   // local variable declaration:
   int a = 100;
   int b = 200;
   int ret;
 
   // calling a function to get max value.
   ret = max(a, b);
   cout << "Max value is : " << ret << endl;
 
   return 0;
}
 
// function returning the max between two numbers
int max(int num1, int num2) {
   // local variable declaration
   int result;
 
   if (num1 > num2)
      result = num1;
   else
      result = num2;
 
   return result; 
}

Zachowałem funkcję max () razem z funkcją main () i skompilowałem kod źródłowy. Podczas uruchamiania końcowego pliku wykonywalnego dałoby to następujący wynik -

Max value is : 200

Argumenty funkcji

Jeśli funkcja ma używać argumentów, musi zadeklarować zmienne, które akceptują wartości argumentów. Te zmienne nazywane sąformal parameters funkcji.

Parametry formalne zachowują się jak inne zmienne lokalne wewnątrz funkcji i są tworzone po wejściu do funkcji i niszczone po zakończeniu.

Podczas wywoływania funkcji istnieją dwa sposoby przekazywania argumentów do funkcji -

Sr.No Typ i opis połączenia
1 Zadzwoń według wartości

Ta metoda kopiuje rzeczywistą wartość argumentu do parametru formalnego funkcji. W tym przypadku zmiany wprowadzone w parametrze wewnątrz funkcji nie mają wpływu na argument.

2 Zadzwoń przez wskaźnik

Ta metoda kopiuje adres argumentu do parametru formalnego. Wewnątrz funkcji adres służy do uzyskania dostępu do faktycznego argumentu użytego w wywołaniu. Oznacza to, że zmiany wprowadzone w parametrze wpływają na argument.

3 Zadzwoń przez numer referencyjny

Ta metoda kopiuje odwołanie do argumentu do parametru formalnego. Wewnątrz funkcji odwołanie służy do uzyskania dostępu do rzeczywistego argumentu użytego w wywołaniu. Oznacza to, że zmiany wprowadzone w parametrze wpływają na argument.

Domyślnie C ++ używa call by valueprzekazywać argumenty. Ogólnie oznacza to, że kod wewnątrz funkcji nie może zmieniać argumentów używanych do wywołania funkcji i powyższego przykładu podczas wywoływania funkcji max () używającej tej samej metody.

Domyślne wartości parametrów

Podczas definiowania funkcji można określić wartość domyślną każdego z ostatnich parametrów. Ta wartość zostanie użyta, jeśli odpowiadający jej argument pozostanie pusty podczas wywoływania funkcji.

Odbywa się to za pomocą operatora przypisania i przypisywania wartości argumentom w definicji funkcji. Jeśli wartość tego parametru nie jest przekazywana podczas wywoływania funkcji, używana jest domyślna podana wartość, ale jeśli wartość jest określona, ​​ta wartość domyślna jest ignorowana, a zamiast niej używana jest przekazana wartość. Rozważmy następujący przykład -

#include <iostream>
using namespace std;
 
int sum(int a, int b = 20) {
   int result;
   result = a + b;
  
   return (result);
}
int main () {
   // local variable declaration:
   int a = 100;
   int b = 200;
   int result;
 
   // calling a function to add the values.
   result = sum(a, b);
   cout << "Total value is :" << result << endl;

   // calling a function again as follows.
   result = sum(a);
   cout << "Total value is :" << result << endl;
 
   return 0;
}

Kiedy powyższy kod jest kompilowany i wykonywany, daje następujący wynik -

Total value is :300
Total value is :120