Tablice w funkcjach
Ostatnio zmodyfikowano 2014-11-08 18:33
plor Temat założony przez niniejszego użytkownika |
Tablice w funkcjach » 2014-11-08 18:13:29 To jest mój pierwszy post i od razu kompromitujące pytanie (w c++ jestem zielona :) ) Funkcję, która tworzy tablicę nawet udało mi się skutecznie napisać, przy próbie napisania funkcji wyświetlającej tą tablicę pojawił się błąd, którego nie umiem znaleźć. Piszę w microsoft visual c++ 2010. void tworztab( int n ) { double * tab = new double[ n ]; for( int i = 0; i < n; i++ ) { cin >> tab[ i ]; } } void wypisz( double const * tab, int n ) { for( int i = 0; i < n; i++ ) { cout << tab[ i ] << " "; } }
I mając n, wywołuję tak: tworztab(n); wypisz(tab, n); Stąd moje pytanie, co tu jest nie tak? |
|
Monika90 |
» 2014-11-08 18:28:31 Przerób funkcję tworztab, tak żeby zwracała wskaźnik tab i wtedy wywołuj tak tab = tworztab( n ); wypisz( tab, n );
Uwaga ogólna, oczywiście zgodnie z zasadami sztuki należałoby użyć inteligentnych wskaźników, np. std::unique_ptr<double[]> albo po prostu std::vector<double> |
|
1aam2am1 |
» 2014-11-08 18:33:23 W tworztab tworzysz tablice i jej adres przypisujesz do tab* Gdy wychodzisz z funkcji tracisz wskaźnik tab i masz wyciek pamięci.
To są podstawowe błędy. Skończ może najpierw jakiś kurs ze strony. I wygoogluj jak się alokuje pamięć w c++. |
|
« 1 » |