Poznaj C++ w$ godziny0176

Poznaj C++ w$ godziny0176



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.

Zwracanie wartości przez referencje

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

// 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.

Zwracanie wartości przez referencje

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:    )


Wyszukiwarka

Podobne podstrony:
Poznaj C++ w$ godziny0170 Referencje 159Przekazywanie argumentów funkcji przez referencje W trakcie
Poznaj C++ w$ godziny0166 Referencje 155 Referencje 155 ANALIZA: W linii 8 deklarujemy zmienną lokal
Poznaj C++ w$ godziny0168 Referencje 157 Referencje 157 23; cout « ” 24: cout « " 25: re
Poznaj C++ w$ godziny0172 Referencje 161 Referencje 161 18 { 19 int temp; 20 21 cout «
Poznaj C++ w$ godziny0174 Referencje 163 Linie 24-26 zamieniają wartości. Efekt zamiany wypisywany j
Poznaj C++ w$ godziny0080 66 Godzina 5Listing 5.3. Przekazywanie przez wartość 1:    
skanuj0261 Poprawność decyzji podejmowanych przez inwestorów uzależniona jest od posiadanych infor
Poznaj C++ w$ godziny0180 169Zaawansowane referencje i wskaźniki 39:    FunkcjaDruga(
Poznaj C++ w$ godziny0185 174 Godzina 12 52:    // FunkcjaDruga pobiera referencje do
Poznaj C++ w$ godziny0010 Spis treści    ix 11    Referencje
Poznaj C++ w$ godziny0023 Zaczynamy 7 C++ to nie tylko lepsze C Prawdą jest, że C++ to rozbudowane C
Poznaj C++ w$ godziny0035 Program w C++ 19Funkcje ■ain() jest funkcją specjalną. Jest automatycznie
Poznaj C++ w$ godziny0036 20 Godzina 2Korzystanie z funkcji Funkcja może zwracać albo jakąś wartość
Poznaj C++ w$ godziny0037 Program w C++ 21 16:    cout « "Wywołanie funkcji Add(
Poznaj C++ w$ godziny0072 58 Godzina 5 Rysunek 5.1 W momencie wywołania funkcji program przechodzi d
Poznaj C++ w$ godziny0073 Funkcje 59Rysunek 5.2 Funkcje 59 Prototyp, pod względem typu wartości zwra

więcej podobnych podstron