Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

Rozdział 26, zadanie 1.

Ostatnio zmodyfikowano 2017-09-24 14:00
Autor Wiadomość
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??
C/C++
#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ź.
P-165077
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"
P-165078
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.
P-165121
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.
P-165123
YooSy
» 2017-09-22 21:54:56
https://4programmers.net/C​/Przekazywanie_parametru_przez_warto%C5%9B%C4%87_i_referencj%C4%99
Frazy, które należy wpisać w wyszukiwarkę google:
Przydaje się umiejętność wyszukiwania wiadomości w sieci.
P-165128
wojcioo
Temat założony przez niniejszego użytkownika
» 2017-09-24 14:00:36
Dzięki serdecznie, na takie odpowiedzi liczyłem!
P-165177
« 1 »
  Strona 1 z 1