Programowanie i algorytmy

Argumenty funkcji

powrót

Argumenty funkcji to dane, które są przekazywane dla funkcji, na podstawie których wykonywane są instrukcje. Np. dla funkcji sumującej dwie liczby rzeczywiste argumentami będą te dwie liczby:

 

double funkcja(double argument1, double argument2)

 

Definiując funkcję, musimy zdefiniować listę argumentów, nadając im typy oddzielając je przecinkami. Gdy definiujemy tylko prototyp funkcji, wystarczy nadać  same nazwy typó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 wpisać dane przekazywane dla funkcji:

#include <cstdlib>
#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); 
 
  system("PAUSE");
  return EXIT_SUCCESS;
}
 

 

Ważną rzeczą jest zrozumienie, że w momencie przekazywania zmiennych jako argumenty, funkcja tworzy ich kopie w pamięci. 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 <cstdlib>
#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
 
  system("PAUSE");
  return EXIT_SUCCESS;
}
 

 

Żeby ominąć ten problem, należy zapoznać się z tym artykułem - referencje.