Rozdział 26, zadanie 1.
Ostatnio zmodyfikowano 2017-09-24 14:00
wojcioo Temat założony przez niniejszego użytkownika |
Rozdział 26, zadanie 1. » 2017-09-21 20:17:52 Witam, mam trochę trywialne pytanie - nie wiem dlaczego w tym zadaniu wartość musi zostać przez referencje?? #include <iostream> #include <string> using namespace std;
wczytajOsobe( string & name, string & surname, int & age ) { cin >> name; cin >> surname; cin >> age; } wypiszOsobe( string name, string surname, int age ) { cout << "Masz na imie: " << name << endl; cout << "Masz na nazwisko: " << surname << endl; cout << "Masz lat: " << age << endl; } int main() { string imie[ 2 ]; string nazwisko[ 2 ]; int wiek[ 2 ]; for( int i = 0; i < 2; i++ ) wczytajOsobe( imie[ i ], nazwisko[ i ], wiek[ i ] ); for( int i = 0; i < 2; i++ ) wypiszOsobe( imie[ i ], nazwisko[ i ], wiek[ i ] ); return 0; }
Z góry dziękuję za odpowiedź. |
|
Kinexity |
» 2017-09-21 20:23:26 Nie wartość, a zmienna jest przekazywana przez referencję. Taka operacja jest wykonywana po to, że chcesz coś zapisać do tej konkretnej zmiennej, więc musisz mieć do niej dostęp wewnątrz funkcji. Funkcja nie wie o tym, że gdzieś istnieje zmienna w niej niezadeklarowana, dopóki jej nie powiem. Referencja mówi funkcji : "Masz tutaj zmienną. Jest ona zapisana tu, a tu. Nie kopiuj jej, lecz wstaw do niej wartość, którą poda użytkownik" |
|
wojcioo Temat założony przez niniejszego użytkownika |
» 2017-09-22 20:00:13 Dzięki za odpowiedź tylko chodzi mi o to że to rozwiązanie nie działa jeżeli do funkcji przekazuje zmienną przez wartość natomiast przez referencje działa i chciałbym się dowiedzieć dlaczego się tak dzieje. Mógłbyś tak po chłopsku to wytłumaczyć? :) PS: Trochę szczęśliwym trafem doszedłem do rozwiązania metodą prób i błędów ale nie wiem dlaczego tak ma być... stąd to moje głupie pytanie. |
|
Kinexity |
» 2017-09-22 20:05:09 Gdy przekazujesz przez wartość, to program tworzy KOPIĘ zmiennej na potrzeby funkcji, co oznacza, że wewnątrz funkcji dane podajesz nie do zmiennej a do jej kopii, która zostanie USUNIĘTA po zakończeniu funkcji. |
|
YooSy |
» 2017-09-22 21:54:56 |
|
wojcioo Temat założony przez niniejszego użytkownika |
» 2017-09-24 14:00:36 Dzięki serdecznie, na takie odpowiedzi liczyłem!
|
|
« 1 » |