Etap 4: Funkcje i przekazywanie argumentów w C++
Dogłębna analiza definiowania funkcji, prototypów oraz różnic między przekazywaniem przez wartość i referencję.
Funkcje w C++: Modułowość i Reużywalność
Funkcje to podstawowe bloki konstrukcyjne programu, które pozwalają na dzielenie złożonych problemów na mniejsze, zarządzalne fragmenty. Na Twoim poziomie kluczowe jest nie tylko to, jak funkcję napisać, ale jak sprawnie przesyłać do niej dane.
1. Budowa Funkcji
Każda funkcja składa się z typu zwracanego, nazwy, listy parametrów oraz ciała funkcji.
typ_zwracany nazwa_funkcji(parametry) {
// treść
return wartosc; // jeśli typ nie jest void
}Ważne: Jeśli funkcja znajduje się poniżej funkcji main(), musisz na górze pliku umieścić jej prototyp (deklarację).
double obliczSrednia(int a, int b); // Prototyp2. Przekazywanie argumentów przez wartość
To domyślny sposób w C++. Funkcja otrzymuje kopię zmiennej. Zmiany dokonane wewnątrz funkcji nie wpływają na zmienną oryginalną.
void zwieksz(int x) {
x = x + 10; // Zmienia tylko lokalną kopię
}
int main() {
int liczba = 5;
zwieksz(liczba);
// liczba nadal wynosi 5
}3. Przekazywanie przez referencję (&)
Używając symbolu &, tworzysz alias do oryginalnej zmiennej. Funkcja operuje bezpośrednio na danych z miejsca wywołania. Jest to wydajniejsze (brak kopiowania dużych struktur) i pozwala funkcji „zwrócić” więcej niż jedną wartość.
void faktycznieZwieksz(int &x) {
x = x + 10; // Zmienia oryginał
}4. Przekazywanie tablic do funkcji
Tablice są specyficzne – w C++ tablica przekazywana do funkcji automatycznie „degraduje” do wskaźnika na jej pierwszy element. Oznacza to, że funkcja zawsze operuje na oryginale, a Ty musisz dodatkowo przekazać rozmiar tablicy.
void wypiszTablice(int tab[], int rozmiar) {
for(int i = 0; i < rozmiar; i++) {
std::cout << tab[i] << " ";
}
}Pułapki i dobre praktyki na kolokwium
- Zwracanie wartości (
return): Pamiętaj, że funkcja kończy swoje działanie natychmiast po napotkaniureturn. Jeśli funkcja ma zwracaćint, upewnij się, że każda ścieżka logiczna (np. wewnątrzif) kończy się instrukcjąreturn. - Zmienne lokalne: Zmienne zadeklarowane wewnątrz funkcji przestają istnieć po jej zakończeniu. Nigdy nie próbuj zwracać referencji do zmiennej lokalnej!
- void: Używaj
void, gdy funkcja ma coś wykonać (np. wypisać tekst), a nie obliczyć wartość. W funkcjachvoidinstrukcjareturn;(bez wartości) służy do wcześniejszego przerwania funkcji.
Przykład: Funkcja zamieniająca dwie wartości (Swap)
To klasyczne zadanie egzaminacyjne sprawdzające rozumienie referencji:
void zamien(int &a, int &b) {
int temp = a;
a = b;
b = temp;
}Może Cię zainteresować
Etap 11: Arytmetyka wskaźników w C++
Zrozumienie, jak C++ operuje na adresach pamięci. Dowiedz się, dlaczego ptr++ to coś więcej niż dodanie jedynki.
Etap 10: Wskaźniki, operator adresu i dereferencji
Zrozumienie fundamentów adresowania pamięci w C++: jak działają wskaźniki i operatory niskopoziomowe.
Etap 6: Obsługa napisów w stylu C (char[])
Przewodnik po niskopoziomowym przetwarzaniu napisów jako tablic znaków zakończonych zerem, zgodnie z ograniczeniami kolokwium.