Referencje 165
Funkcja Potęgi () sprawdza poprawność parametru przekazanego przez wartość. Jeśli jest on większy od 20, to zmienna Wartość ustawiania jest na 1. Zauważ, że wartość zwracana przez funkcję jest zarezerwowana dla wartości błędu i jest równa
I gdy wystąpił błąd albo 0 gdy wszystko było w porządku.
Dodatkowe wartości, kwadratu i sześcianu podanej liczby, nie są zwracane z wykorzystaniem mechanizmów oferowanych przez return. Zmieniona zostaje zawartość pamięci wskazywanej przez przekazane do funkcji wskaźniki, co powoduje modyfikację wartości zmiennych w funkcji wywołującej, do których te adresy należą.
W liniach 36 i 37 wartości zwracane są przypisywane pod wskaźniki. W linii 40, do zmiennej Wartość, przypisywana jest wartość 0, co oznacza, że operacja przebiegła pomyślnie. Linia 40 zwraca zmienną Wartość i kończy funkcję.
Ten program można udoskonalić, np. poprzez wprowadzenie deklaracji dla wartości błędu i sukcesu:
enum WARTOSC_BLEDU {SUKCES, PORAŻKA);
Teraz, zamiast zwracać niewiele mówiące wartości 0 lub 1, możemy zwracać SUKCES albo PORAŻKA.
Mimo że program 11.7. jest poprawny i działa dobrze, to można go uczynić bardziej przejrzystym poprzez zamianę wskaźników na referencje. Listing 11.8. zawiera ten sam program, przepisany z wykorzystaniem referencji i typu wyliczeniowego dla wartości błędu.
// Listing 11.8
// Zwracanie wielu wartości z funkcji // z wykorzystaniem referencji
#include <iostream.h>
enum KOD_BLEDU { SUKCES, PORAŻKA };
KOD_BLEDU Potęgi(int, intS, intS);
int main()
{
int liczba, kwadrat, sześcian;
KOD_BLEDU rezultat;
cout « "Podaj liczbę (0 - 20): cin » liczba;
rezultat = Potęgi(liczba, kwadrat, sześcian);
1:
2:
3:
4:
5:
6:
7:
8:
9:
10
II 12
13
14
15
16
17
18
19
SUKCES)
if (rezultat (
20 21 22
cout « "liczba: " « liczba « "\n"; cout « "kwadrat: " « kwadrat « "\n"; cout « "sześcian: " « sześcian « "\n";
23
24
25
26
Funkcja Potęgi () sprawdza poprawność parametru przekazanego przez wartość. Jeśli jest on większy od 20, to zmienna Wartość ustawiania jest na 1. Zauważ, że wartość zwracana przez funkcję jest zarezerwowana dla wartości błędu i jest równa 1 gdy wystąpi! błąd albo 0 gdy wszystko było w porządku.
Dodatkowe wartości, kwadratu i sześcianu podanej liczby, nie są zwracane z wykorzystaniem mechanizmów oferowanych przez return. Zmieniona zostaje zawartość pamięci wskazywanej przez przekazane do funkcji wskaźniki, co powoduje modyfikację wartości zmiennych w funkcji wywołującej, do których te adresy należą.
W liniach 36 i 37 wartości zwracane są przypisywane pod wskaźniki. W linii 40, do zmiennej Wartość, przypisywana jest wartość 0, co oznacza, że operacja przebiegła pomyślnie. Linia 40 zwraca zmienną Wartość i kończy funkcję.
Ten program można udoskonalić, np. poprzez wprowadzenie deklaracji dla wartości błędu i sukcesu:
enum WARTOSC_BLEDU (SUKCES, PORAŻKA);
Teraz, zamiast zwracać niewiele mówiące wartości 0 lub 1, możemy zwracać SUKCES albo PORAŻKA.
Mimo że program 11.7. jest poprawny i działa dobrze, to można go uczynić bardziej przejrzystym poprzez zamianę wskaźników na referencje. Listing 11.8. zawiera ten sam program, przepisany z wykorzystaniem referencji i typu wyliczeniowego dla wartości błędu.
Listing 11.8. Zwracanie wartości przez referencje
1: // Listing 11.8
2: // Zwracanie wielu wartości z funkcji
3: //z wykorzystaniem referencji
4:
5: flinclude <iostream.h>
6:
7: enum KOD_BLEDU ( SUKCES, PORAŻKA );
8:
9: KOD_BLEDU Potęgi(int, intS, intfi);
10:
11: int main()
12: (
13: int liczba, kwadrat, sześcian;
14: KOD_BLEDU rezultat;
15:
16: cout « "Podaj liczbę (0 - 20):
17: cin » liczba;
18:
19: rezultat = Potęgi(liczba, kwadrat, sześcian);
20:
21: if (rezultat = SUKCES)
22: {
23: cout « "liczba: " « liczba « ”\n";
24: cout « "kwadrat: " « kwadrat « "\n";
\n";
25: cout « "sześcian: “ « sześcian «
26: )