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ć: 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ę :) |
|
DejaVu |
» 2013-09-09 22:00:12 Popatrz na obrazki z lekcji dot. referencji, bo tam to jest wyjaśnione. |
|
pekfos |
» 2013-09-09 22:24:34 gdy tablice zostają przesyłane przez referencję |
W tym kodzie nie ma żadnego przekazywania tablicy do funkcji. |
|
tomek997 Temat założony przez niniejszego użytkownika |
» 2013-09-09 23:40:19 @pekfos To jak można nazwać, np. 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 :) |
|
Monika90 |
» 2013-09-09 23:53:50 To jak można nazwać, np.
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. |
|
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 ? |
|
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. |
|
DejaVu |
» 2013-09-10 10:13:41 |
|
« 1 » 2 |