Lekcja 34
Funkcje w języku C++ - zasięg funkcji i argumenty funkcji
Wprowadzenie
W poprzedniej lekcji przedstawiłem Ci zagadnienie funkcji i zaznaczyłem, że funkcje są bardzo ważnym elementem języka C++, o czym już wkrótce się przekonasz. Tak naprawdę gdyby nie funkcje, pisanie dużych programów byłoby prawie niemożliwe.
W tej lekcji poznasz metody przekazywania argumentów do funkcji i zobaczysz na własne oczy, że argumenty do funkcji mogą być przekazywane na różne sposoby, co z kolei ma duży wpływ na możliwość zmiany ich wartości. Od razu warto zaznaczyć, że jeśli nie pamiętasz dokładnie jak działa referencja i jak działają wskaźniki, lepiej wróć do tych lekcji - tutaj i w następnych lekcjach będą one wykorzystywane niemal cały czas. Dowiesz się tutaj także o zasięgu funkcji, przesłanianiu zmiennych i korzystaniu ze zmiennych globalnych przez funkcje.
Argumenty funkcji - nazwy argumentów
Jak już dobrze wiesz, funkcje mogą przyjmować argumenty lub nie. W poprzedniej lekcji przedstawiłem Ci różne funkcje - zarówno te, które przyjmowały argumenty, jak i takie, które argumentów nie przyjmowały.
Lista argumentów funkcji składa się z nazwy typu oraz nazwy argumentu funkcji. Powstaje pytanie - jak powinny być nazywane argumenty - dowolnie, czy może tak jak nazwy zmiennych, które zostały do funkcji przekazane?
Okazuje się, że nazwy argumentów funkcji mogą nazywać się dowolnie pod warunkiem, że w danym zasięgu nazwy argumentów nie będą się powtarzać.
W poniższym programie zostały zadeklarowane 2 funkcje, o nazwach funkcja1 i funkcja2. Jak możesz zauważyć, obie funkcje wywoływane są z argumentami liczba1 i liczba2. Jednak w deklaracji funkcji argumenty te są nazwane różnie. W funkcji funkcja1 argumenty te są nazwane inaczej niż nazwy argumentów wywołania funkcji w funkcji main. Natomiast w funkcji funkcja2 argumenty te są nazwane dokładnie tak samo jak nazwy argumentów wywołania funkcji w funkcji main. Jak widać, w obu przypadkach funkcje działają poprawnie, co oznacza że w deklaracji funkcji argumenty mogą być nazwane albo tak samo jak nazwy argumentów podczas wywołania funkcji lub też zupełnie inaczej.
#include <iostream>
using namespace std;
void funkcja1(int, int);
double funkcja2(int, int);
int main()
{
int liczba1=5,liczba2=8;
funkcja1(liczba1,liczba2);
cout <<"Suma liczb to "<<funkcja2(liczba1,liczba2);
cout <<endl<<"Nacisnij ENTER aby zakonczyc"<<endl;
getchar();
return 0;
}
void funkcja1(int a, int b)
{
cout <<a<<' '<<b<<endl;
}
double funkcja2(int liczba1, int liczba2)
{
return liczba1+liczba2;
}
program nr 34.1