Funkcje 73
27: int RazyDwa(int zrodło)
28: {
29: return 2 * zrodlo;
30: ) v
Podaj liczbę: 20
Zrodlo: 40
Zrodlo: 80 Zrodlo: 160
ANALIZA:
W linii 5 deklarowana jest wewnętrzna funkcja RazyDwa (). Ma ona jeden parametr typu int. Wartość zwracana jest również typu int. Deklaracja wygląda jak zwykły prototyp, jedyna różnica polega na użyciu słowa kluczowego inline.
Taka deklaracja funkcji powoduje, że w każdym miejscu, w którym podasz:
target = RazyDwa(target); wykonywana jest instrukcja: target = 2 * target;
Przed wykonaniem programu, kompilator umieszcza instrukcje funkcji w kodzie. Oszczędza się w ten sposób na liczbie skoków wewnątrz kodu, lecz traci na rozmiarze programu.
Kiedy wywołujesz funkcję, program przechodzi do wykonania instrukcji danej funkcji i przekazuje parametry. Kiedy funkcja się kończy, zwracana jest wartość (ewentualnie void) i program wraca do miejsca, z którego funkcja została wywołana.
Jak to zadanie jest zorganizowane? Skąd program wie, dokąd ma przejść? Gdzie są przechowywane zmienne przekazywane do funkcji? Co się dzieje ze zmiennymi deklarowanymi wewnątrz funkcji? W jaki sposób jest przekazywana wartość zwracane przez funkcję? Skąd program wie, dokąd ma wrócić po wykonaniu funkcji?
NOWY TERMIN
Kiedy rozpoczynasz program, to kompilator tworzy stos. Stos to specjalny obszar pamięci (struktura danych) służąca do przechowywania danych wymaganych przez wszystkie funkcje w programie. Określenie stos wynika z działania tej struktury, wartość, która została położona na stos jako ostatnia zostanie zdjęta jako pierwsza (ang. Last-in first-out). Widać tu analogię np. ze stosem tac w kuchni, tak jak na rysunku 5.4.
27: int RazyDwa(int zrodlo)
28: {
29: return 2 * zrodlo;
30: }
EFEKT DZIAŁANIA
Podaj liczbę: 20
Zrodlo: 40 Zrodlo: 80 Zrodlo: 160
ANALIZA
W linii 5 deklarowana jest wewnętrzna funkcja RazyDwa (). Ma ona jeden parametr typu int. Wartość zwracana jest również typu int. Deklaracja svygląda jak zwykły prototyp, jedyna różnica polega na użyciu słowa kluczowego inline.
Taka deklaracja funkcji powoduje, że w każdym miejscu, w którym podasz: target = RazyDwa(target);
wykonywana jest instrukcja: target = 2 * target;
Przed wykonaniem programu, kompilator umieszcza instrukcje funkcji w kodzie. Oszczędza się w ten sposób na liczbie skoków wewnątrz kodu, lecz traci na rozmiarze programu.
Kiedy wywołujesz funkcję, program przechodzi do wykonania instrukcji danej funkcji i przekazuje parametry. Kiedy funkcja się kończy, zwracana jest wartość (ewentualnie void) i program wraca do miejsca, z którego funkcja została wywołana.
Jak to zadanie jest zorganizowane? Skąd program wie, dokąd ma przejść? Gdzie są przechowywane zmienne przekazywane do funkcji? Co się dzieje ze zmiennymi deklarowanymi wewnątrz funkcji? W jaki sposób jest przekazywana wartość zwracane przez funkcję? Skąd program wie, dokąd ma wrócić po wykonaniu funkcji?
NOWY TERMIN
Kiedy rozpoczynasz program, to kompilator tworzy stos. Stos to specjalny obszar pamięci (struktura danych) służąca do przechowywania danych wymaganych przez wszystkie funkcje w programie. Określenie stos wynika z działania tej struktury, wartość, która została położona na stos jako ostatnia zostanie zdjęta jako pierwsza (ang. Last-in first-out). Widać tu analogię np. ze stosem tac w kuchni, tak jak na rysunku 5.4.