1. Wprowadzenie do C++
  2. Szybki start
  3. Pierwszy program
  4. Komentarze
  5. Zmienne
  6. Typy danych
  7. Operatory
  8. Instrukcje warunkowe
  9. Pętle
  10. Tablice
  11. Funkcje
  12. Argumenty
  13. Wartości zwracane
  14. Wskaźniki
  15. Podsumowanie

Użycie argumentów

Możliwe jest przekazywanie argumentów przez wartość lub przez referencję. Gdy argument jest przekazywany przez wartość, funkcja tworzy kopię wartości argumentu. Gdy argument jest przekazywany przez referencję, funkcja otrzymuje bezpośredni dostęp do zmiennej argumentu i może ją zmodyfikować. Aby przekazać argument przez referencję, należy użyć operatora &. Na przykład:

Aby przekazać argument przez referencję, należy użyć operatora &. Na przykład:

								
#include <iostream>

using namespace std;

void zwieksz(int& x) {
  x++;
}

int main() {
  int a = 5;
  zwieksz(a);
  cout << a << endl; // wypisze "6"
  return 0;
}
								
						

Można przekazywać tablice jako argumenty funkcji. W języku C++ tablice są przekazywane przez referencję, więc funkcja otrzymuje bezpośredni dostęp do elementów tablicy. Na przykład:

								
#include <iostream>

using namespace std;

void wypisz(int tab[], int rozmiar) {
  for (int i = 0; i < rozmiar; i++) {
    cout << tab[i] << " ";
  }
  cout << endl;
}

int main() {
  int tablica[] = {1, 2, 3, 4, 5};
  wypisz(tablica, 5); // wypisze "1 2 3 4 5"

  return 0;
}
								
						

Funkcje mogą mieć wiele argumentów. Przykładowo, funkcja sqrt z biblioteki matematycznej przyjmuje jeden argument typu double i zwraca pierwiastek kwadratowy tej wartości. Funkcja pow przyjmuje dwa argumenty typu double i zwraca pierwszy argument podniesiony do potęgi drugiego argumentu. Oto przykład użycia tych funkcji:

								
#include <cmath>
#include <iostream>

using namespace std;

int main() {

  double x = 16.0;
  double y = 2.0;
  double pierwiastek = sqrt(x);
  double potega = pow(x, y);

  cout << "Pierwiastek kwadratowy z " << x << " to " << pierwiastek << endl;
  cout << x << " do potęgi " << y << " to " << potega << endl;

  return 0;
}
								
						

Argumenty można domyślnie inicjować, co pozwala na wywołanie funkcji bez podawania wartości tych argumentów. Argumenty domyślne muszą być zdefiniowane w prototypie funkcji. Na przykład:

								
#include <cmath>
#include <iostream>

using namespace std;

void wypisz_wiadomosc(string imie = "świecie") {
  cout << "Witaj, " << imie << "!" << endl;
}

int main() {
  wypisz_wiadomosc(); // wypisze "Witaj, świecie!"
  wypisz_wiadomosc("Jan"); // wypisze "Witaj, Jan!"

  return 0;
}
								
						

Argumenty można również przekazywać jako wartości domyślne. W takim przypadku funkcja korzysta z wartości domyślnych, jeśli argumenty nie zostały przekazane podczas wywoływania funkcji. Na przykład:

								
#include <iostream>
using namespace std;

void podziel(int x = 10, int y = 2) {
  cout << x / y << endl;
}

int main() {
  podziel(); // wypisze "5"
  podziel(20); // wypisze "10"
  podziel(20, 4); // wypisze "5"

  return 0;
}
								
						

Możliwe jest przekazywanie argumentów z użyciem operatora .... W ten sposób można przekazać dowolną liczbę argumentów o różnych typach. Funkcja musi mieć określoną liczbę argumentów wymaganych, ale może również przyjąć argumenty opcjonalne. Mechanizm ten jest nazywany "argumentami zmiennych". Na przykład:

								
#include <iostream>
#include <cstdarg>

using namespace std;

int suma(int liczba_argumentow, ...) {

  int suma = 0;
  va_list argumenty;
  va_start(argumenty, liczba_argumentow);

  for (int i = 0; i < liczba_argumentow; i++) {
    suma += va_arg(argumenty, int);
}

  va_end(argumenty);

  return suma;
}

int main() {

  int wynik = suma(4, 1, 2, 3, 4);
  cout << wynik << endl; // wypisze "10"

  return 0;
}
								
						
Notatka

To tylko kilka przykładów na temat argumentów w języku C++. W C++ istnieje wiele sposobów przekazywania argumentów do funkcji, co pozwala na bardziej elastyczne i efektywne programowanie.