Różnica w działaniu funkcji z użyciem oraz bez użycia wskaźnika w parametrze
Ostatnio zmodyfikowano 2014-01-18 16:17
marek252 Temat założony przez niniejszego użytkownika |
Różnica w działaniu funkcji z użyciem oraz bez użycia wskaźnika w parametrze » 2014-01-18 16:14:31 Witam. Moje pytanie jest następujące, czemu taki kod działa poprawnie: #include <string> #include <iostream> #include <conio.h> #include <stdlib.h> #include <stdio.h>
void WCZYTAJ( int & x, int & y, int & z ) { std::cout << "Podaj trzy liczby: "; std::cin >> x >> y >> z; }
void LICZ_SUM( int a, int b, int c, int & s ) { s = a + b + c; }
float POLICZ_SR( int x, int y, int z ) { int sum = x + y + z; return sum / 3.0; }
void WYSWIETL( int su, float sr ) { std::cout << std::endl << "Suma = " << su; std::cout << std::endl << "Srednia = " << sr; }
int main( void ) { int a, b, c, suma; float srednia; WCZYTAJ( a, b, c ); LICZ_SUM( a, b, c, suma ); srednia = POLICZ_SR( a, b, c ); WYSWIETL( suma, srednia ); return 0; }
a gdybyśmy zamienili funkcję WCZYTAJ na taką: void WCZYTAJ( int x, int y, int z ) { std::cout << "Podaj trzy liczby: "; std::cin >> x >> y >> z; } to nie działa tak jak bym chciał? To znaczy pojawiają się jakieś dziwne duże liczby. Dlaczego w tych parametrach funkcji musi być podany adres zmiennych a nie samo int x, int y, int z? Pozdrawiam |
|
pekfos |
» 2014-01-18 16:17:14 W drugiej wersji WCZYTAJ() przekazujesz argumenty przez wartość, więc modyfikujesz ich lokalne kopie. |
|
« 1 » |