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

Przesyłanie tablic do funkcji przez referencję.

Ostatnio zmodyfikowano 2013-09-10 14:43
Autor Wiadomość
tomek997
Temat założony przez niniejszego użytkownika
Przesyłanie tablic do funkcji przez referencję.
» 2013-09-09 21:48:27
W lekcji nr 26 kursu, jest zadanie domowe o treści:

"Napisz prosty program, który wczyta imię, nazwisko i wiek dwóch osób. Funkcja główna programu ma mieć następującą postać:

C/C++
int main()
{
    std::string imie[ 2 ];
    std::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;
}

W programie do wczytywania tekstu użyj std::cin.

Zadbaj o bezpieczeństwo wprowadzonych danych, tj. w przypadku błędnego wieku (np. wprowadzonego tekstu) program ma ponawiać żądanie aż do skutku.


Poradziłem sobie z tym (po dłuższym czasie), gdy tablice zostają przesyłane przez referencję ... I tu pojawia się moje pytanie ...

Dlaczego tylko przez referencję ?


Jestem początkujący i nie wiem czy dobrze wszystko opisałem ... Możliwe jest że są też inne metody ale pewnie ich nie znam.

Pytam z czystej ciekawości ^^

Za każdą odpowiedź serdecznie dziękuję :)
P-91810
DejaVu
» 2013-09-09 22:00:12
Popatrz na obrazki z lekcji dot. referencji, bo tam to jest wyjaśnione.
P-91812
pekfos
» 2013-09-09 22:24:34
gdy tablice zostają przesyłane przez referencję
W tym kodzie nie ma żadnego przekazywania tablicy do funkcji.
P-91813
tomek997
Temat założony przez niniejszego użytkownika
» 2013-09-09 23:40:19
@pekfos

To jak można nazwać, np.

C/C++
wczytajOsobe( imie[ i ], nazwisko[ i ], wiek[ i ] )


@DejaVu

Tylko z tamtej lekcji wynika, że można argumenty wywoływać kopiując ich wartość albo przez referencje. W moim przypadku niestety nie działa program jeśli nie umieszczę znaku "&" przed argumentem.

Jutro dodam to jak zrobiłem i może popełnilem gdzieś błąd, dlatego mi nie działał wcześniej :)
P-91818
Monika90
» 2013-09-09 23:53:50
To jak można nazwać, np.

C/C++
wczytajOsobe( imie[ i ], nazwisko[ i ], wiek[ i ] )

imie[i] to jest element tablicy (o indeksie i), a nie tablica. Więc jest to przekazywanie elementów tablicy do funkcji, a nie tablic.
P-91819
tomek997
Temat założony przez niniejszego użytkownika
» 2013-09-09 23:58:29
Czyli jeśli się spotkam z takim czymś to zawsze będę musiał definiować funkcję z referencjami ?
P-91820
Monika90
» 2013-09-10 00:08:04
Czyli jeśli się spotkam z takim czymś to zawsze będę musiał definiować funkcję z referencjami ?
Nie. Przekazujesz przez referencję, gdy:

1. Chcesz aby funkcja zmodyfikowała przekazany jej obiekt. Tak jest u ciebie, bo chcesz aby funkcja zapisała tekst do imie[i].

2. Albo wtedy gdy chesz uniknąć kosztownego kopiowania dużego obiektu.
P-91821
DejaVu
» 2013-09-10 10:13:41
Jest również osobny rozdział poświęcony przekazywaniu tablic do funkcji: » Kurs C++ » Poziom 2Przekazywanie tablic jednowymiarowych do funkcji lekcja.
P-91826
« 1 » 2
  Strona 1 z 2 Następna strona