You are on page 1of 5

Temat: Definiowanie funkcji w języku C++

Funkcje w języku C++ podobnie jak w innych językach


programowania pozwalają na modularyzację programu, tj
podział na osobne fragmenty, które mogą być łatwo
wykorzystane w wielu miejscach programu.

Każda funkcja musi mieć:


• nazwę;
• typ zwracanej przez nią wartości;
• dowolną liczbę argumentów;

Funkcja może pobierać argumenty z programu głównego i użyć


ich do wykonania określonych zadań.
Każda funkcja, która zawraca wartość, musi być wywoływana
przy jednoczesnym przypisaniu danej wartości pewnej zmiennej
globalnej.

Konstrukcja funkcji, która nie zwraca wartości i nie ma


argumentów:
void nazwa_funkcji()
{

}
Puste nawiasy oznaczają, że funkcja nie ma argumentów.
Między nawiasami klamrowymi umieszczamy kod (tzw. ciało
funkcji), który ma zostać wykonany, gdy funkcja zostanie
wywołana.
Słowo kluczowe void oznacza, że funkcja nie zwraca żadnych
danych, które można byłoby przekazać innej funkcji lub
instrukcji.

Konstrukcja funkcji, która ma argumenty:


void nazwa_funkcji(int a)
{
Instrukcje;
}

Konstrukcja funkcji, która ma argumenty i zwraca wartość:


float nazwa_funkcji(float x, float y, float z)
{
Instrukcje;
return nazwa_zmiennej;
}

Trzeba pamiętać, że funkcja, która zwraca wartość, musi ją


zwracać zawsze! Jeżeli kompilator dojdzie do końca instrukcji w
ciele funkcji i nie napotka słowa kluczowego return,
zachowanie wyjścia z funkcji jest niezdefiniowane. Oznacza, to,
że program może zakończyć pracę w wyniku wystąpienia błędu
krytycznego aplikacji.
Wywołanie funkcji
Aby wywołać utworzoną wcześniej funkcję, należy po prostu
napisać jej nazwę w odpowiednim miejscu programu, a w
nawiasach okrągłych podać jej argumenty, jeżeli takowe ma.
Wywoływana funkcja musi być ZAWSZE utworzona przed
miejscem, w którym została wywołana.

Przekazywanie argumentów funkcji przez wartość


Gdy zmienne przekazywane są jako argumenty funkcji, funkcja
tworzy ich kopie w pamięci komputera. Oznacza to, że wszelkie
zmiany na wartościach zmiennych nie będą widoczne w
miejscu, gdzie zostały przekazane do funkcji, Nazwy zmiennych
mogą, ale nie muszą być takie same jak nazwy argumentów
funkcji.

Przekazywanie danych przez referencję


Często kopiowanie danych przekazywanych do funkcji (jak to
ma miejsce podczas przekazywania przez wartość) jest
zjawiskiem niepożądanym! Dane przekazywane do funkcji
mogą zajmować dużo miejsca w pamięci, przez co tracimy moc
obliczeniową komputera.
Aby zapobiec kopiowaniu danych wystarczy użyć symbolu & w
odpowiednim miejscu argumentu, czyli zastosować referencję.
Symbol & umieszcza się za typem danych i przed nazwą
zmiennej.

Dane przekazane przez referencję nie mogą być kopiowane.


Pracujemy wówczas na oryginalnych danych, co oznacza, że
modyfikacja wartości zmiennej zmodyfikuje tę zmienną,
która została przekazana do funkcji przez argument.

Jeśli definicję funkcji umieścimy po funkcji main(), to nie


będzie ona widoczna dla kompilatora, chyba, że przed funkcją
main umieścimy prototyp naszej funkcji!
Prototyp (deklaracja) funkcji – to model, pod którym funkcja
będzie rozpoznawalna w programie. W przeciwieństwie do
funkcji, prototyp jest zakończony średnikiem.
W przypadku, kiedy funkcja ma oddzielny prototyp i definicję,
nie jest konieczne nazywanie argumentów funkci podczas
deklaracji - wystarczą typy tych argumentów.
Przeładowanie funkcji – polega na tym, że w danym
programie występuje więcej niż jedna funkcja o takiej samej
nazwie. To, która z nich zostanie zastosowana zależy od
argumentów, z którymi zostanie wywołana.
Podczas przeładowania nazwy funkcji ważna jest jedynie
odmienność argumentów.

Argumenty domniemane – to takie, które mogą zostać


podane w wywołaniu funkcji lub nie. Argumenty te określa się w
deklaracji funkcji, a nie w jej definicji. Jeśli jednak jest w
programie napisana powyżej jakiegokolwiek jej wywołania, to
oddzielna deklaracja tej funkcji nie jest potrzebna. Sama
definicja funkcji jest wtedy także jej pierwszą deklaracją
występującą w tym programie.

You might also like