Argumenty funkcji to dane, które są przekazywane do funkcji. Na ich podstawie funkcja realizuje swoje zadanie.
double funkcja(double argument1, double argument2)
Definiując funkcję, musimy zdefiniować listę argumentów, deklarując ich typy. Gdy definiujemy tylko prototyp funkcji, nie ma potrzeby nadawania nazw argumentów:
double funkcja(double, double);
Pamiętaj, że kolejność argumentów ma znaczenie, tzn. jeśli pierwszym argumentem jest liczba całkowita, a drugim znak, to w takiej kolejności musisz podać dane przekazywane dla funkcji:
#include <iostream>
using namespace std;
void funkcja(double liczba, char znak)
{
cout<<liczba<<" "<<znak;
}
int main()
{
double l = 3.14;
char zn = 'a';
cout<<"Podałeś następujące wartości argumentów: ";
//wywołanie funkcji przekazując dwa argumenty: liczbę "l" i znak "zn"
funkcja(l, zn);
return 0;
}
W momencie przekazywania zmiennych jako argumenty, funkcja tworzy w pamięci ich kopie. Oznacza to, że wszelkie zmiany na wartościach zmiennych nie będą widoczne w miejscu, gdzie zostały one przekazane do funkcji.
Dla lepszego zobrazowania problemu przeanalizujmy przykład zamiany wartości dwóch zmiennych.
#include <iostream>
using namespace std;
void zamiana(int a, int b)
{
int temp = a;
a = b;
b = temp;
}
int main()
{
int a, b; //zauważ, że nazwy zmiennych mogą być (ale nie muszą)
//takie same jak nazwy argumentów funkcji
cout<<"Podaj dwie liczby: ";
cin>>a>>b;
cout<<"Przed zamianą: a = "<<a<<", b = "<<b<<endl;
//wywołanie funkcji
zamiana(a,b);
cout<<"Po zamianie: a = "<<a<<", b = "<<b<<endl;
//oczywiście w pierwszym i drugim przypadku zostanie
//wyświetlone dokładnie to samo czyli
//np., gdy podamy a = 9, b = 0
//to ujżymy komunikat
//Przed zamianą: a = 9, b = 0
//Po zamianie: a = 9, b = 0
return 0;
}
Żeby ominąć ten problem, należy zapoznać się z artykułem "Funkcje a referencje".