Poznaj C++ w$ godziny0171

Poznaj C++ w$ godziny0171



160 Godzina 11

mmmmm

Main. Przed zamiana, x: 5 y: 10 Zamień. Przed zamiana, x: 5 y: 10 Zamień. Po zamianie, x: 10 y: 5 Main. Po zamianie, x: 5 y: 10

Ten program, w funkcji main (), inicjalizuje dwie zmienne i przekazuje je do funkcji Zamień(), która teoretycznie je zamienia. Jednak po przetestowaniu wyniku w funkcji main() okazuje się, że nic się nie zmieniło!

Problem polega tutaj na tym, że zarówno x jaki i y są przekazywane przez wartość.

Oznacza to, że są tworzone lokalne kopie tych zmiennych i wszystkie operacje są wykonywane na kopiach, nie powodując żadnych zmian zmiennych oryginalnych. To, czego tutaj potrzeba, to przekazywanie x i y przez referencje.

Można ten problem rozwiązać na dwa sposoby. Możesz zamienić parametry funkcji Zamień () na wskaźniki do oryginalnych wartości albo przekazywać referencje,

Implementacja funkcji Zamień () z wykorzystaniem wskaźników

Kiedy przekazujesz wskaźnik, to faktycznie przekazujesz adres zmiennej, co pozwala funkcji na manipulowanie jej wartością. Żeby funkcja Zamień () mogła zamieniać dwie zmienne wartościami, to musimy ja zadeklarować tak, aby jako parametry pobierała dwa wskaźniki do zmiennych typu int. Taki zabieg pozwoli funkcji na pośrednie odwołanie się do tych zmiennych i zamianę ich wartości. Ilustruje to listing 11.5.

Listing 11.5. Przekazywanie referencji z wykorzystanie wskaźników

1:

2:

3:

4:

5:

6:

7:

8:

9:

10:

11:

12:

13:

14:

15:

16:

17:


// Listing 11.5. - przekazywanie przez referencje // z wykorzystaniem wskaźników #include <iostream.h>

void Zamień(int *x, int *y);

int main ()

{

int x = 5, y * 10;

cout « "Main. Przed zamiana, x: " « x « " y: " « y « *"\n";

Zamień(&x, Sy);

cout « "Main. Po zamianie, x: " « x « " y: " « y « "\n”; return 0; ł

Main. Przed zamiana, x: 5 y: 10 Zamień. Przed zamiana, x; 5 y: 10 Zamień. Po zamianie, x: 10 y: 5 Main. Po zamianie, x: 5 y: 10


Ten program, w funkcji main (), inicjalizuje dwie zmienne i przekazuje je do funkcji Zamień (), która teoretycznie je zamienia. Jednak po przetestowaniu wyniku w funkcji main () okazuje się, że nic się nie zmieniło!

Problem polega tutaj na tym, że zarówno x jaki i y są przekazywane przez wartość. Oznacza to, że są tworzone lokalne kopie tych zmiennych i wszystkie operacje są wykonywane na kopiach, nie powodując żadnych zmian zmiennych oryginalnych. To, czego tutaj potrzeba, to przekazywanie x i y przez referencje.

Można ten problem rozwiązać na dwa sposoby. Możesz zamienić parametry funkcji Zamień () na wskaźniki do oryginalnych wartości albo przekazywać referencje,

Implementacja funkcji Zamień () z wykorzystaniem wskaźników

Kiedy przekazujesz wskaźnik, to faktycznie przekazujesz adres zmiennej, co pozwala funkcji na manipulowanie jej wartością. Żeby funkcja Zamień () mogła zamieniać dwie zmienne wartościami, to musimy ja zadeklarować tak, aby jako parametry pobierała dwa wskaźniki do zmiennych typu int. Taki zabieg pozwoli funkcji na pośrednie odwołanie się do tych zmiennych i zamianę ich wartości. Ilustruje to listing

11.5.



Listing 11.5. Przekazywanie referencji z wykorzystanie wskaźników

1

2

3

4

5

6

7

8 9


10; 11:


12

13

14

15

16 17


II Listing 11.5. - przekazywanie przez referencje // z wykorzystaniem wskaźników finclude <iostream.h>


void Zamień(int *x, int *y);


int main()


int x = 5, y = 10;


cout « "Main. Przed zamiana, x: " « x « " y: " « y « *-"\n";

Zamień(Sx, Sy);

cout « "Main. Po zamianie, x: " « x « " y: " « y « "\n"; return 0;


void Zamień(int *px, int *py)


Wyszukiwarka

Podobne podstrony:
Poznaj C++ w$ godziny0174 Referencje 163 Linie 24-26 zamieniają wartości. Efekt zamiany wypisywany j
Poznaj C++ w$ godziny0129 Zaawansowane sterowanie programem 117Listing 8.10. Demonstracja wielokrotn
Poznaj C++ w$ godziny0081 Funkcje 67 Program wraca do funkcji main(), do linii 13. Okazuje się, że w
Poznaj C++ w$ godziny0001 Gdy masz czas tylko na właściwe rozwiązania... Intersoftlcind Gdy masz cza
Poznaj C++ w$ godziny0002 Jesse LibertyC++w 2 4 godziny Tłumaczenie: Grzegorz MichałekInlersofllond
Poznaj C++ w$ godziny0003 Tytuł oryginału: Teach Yourself C++ in 24 Hours, Second Edition Tłumaczeni
Poznaj C++ w$ godziny0004 Spis rozdziałów Część 1 Wstęp do C++ 1 1 Zaczynamy 3 2 Program w C++ 1
Poznaj C++ w$ godziny0005 Część VI Tematy specjalne 293 20 Specjalne klasy i
Poznaj C++ w$ godziny0006 Spis treści Część I Wstęp do C++    1 1    Z
Poznaj C++ w$ godziny0007 VI Poznaj C++ w 24 godziny Przypisywanie wartości do zmiennych
Poznaj C++ w$ godziny0008 Spis treści    vii Zmienne
Poznaj C++ w$ godziny0009 viii Poznaj C++ w 24 godziny 8    Zaawansowane sterowanie p
Poznaj C++ w$ godziny0010 Spis treści    ix 11    Referencje
Poznaj C++ w$ godziny0011 X Poznaj C++ w 24 godziny Ograniczenia przy przeciążaniu operatorów
Poznaj C++ w$ godziny0012 Spis treści    xi Przejścia niedozwolone
Poznaj C++ w$ godziny0013 XII Poznaj C++ w 24 godziny 21    Preprocesor .............
Poznaj C++ w$ godziny0014 Spis treści xiii Interfejs aplikacji
Poznaj C++ w$ godziny0015 XIV Poznaj C++ w 24 godziny Część VIII Dodatki    407 A &nb
Poznaj C++ w$ godziny0016 Wstęp Ta książka ma pomóc Ci w poznaniu zasad programowania w C++. W ciągu

więcej podobnych podstron