Funkcja zwracająca wskaźnik do tablicy wskaźników wskazujących na elementy typu char
Ostatnio zmodyfikowano 2018-03-30 09:10
krzychna Temat założony przez niniejszego użytkownika |
Funkcja zwracająca wskaźnik do tablicy wskaźników wskazujących na elementy typu char » 2018-03-29 23:09:54 Cześć, uczę się C++ z 'Opus Magnum C++11' i natrafiłem na zadanie w którym tak jak w temacie należy stworzyć taką funkcję. Nie wiem, dlaczego kod który wstawiłem nie działa - bład zwracany 'error: cannot convert ‘char**’ to ‘char*’ in return'. Jeżeli ktoś wie jak to rozwiązać to będę wdzięczny. Z góry dzięki :) Treść Napisz funkcję, która zarezerwuje 10 - elementową tablicę, a jej adres przekaże wskaźnikowi o nazwie linijka. Ma to być tablica, w której można przechowywać wskaźniki do tablic znaków.#include <iostream> using namespace std; char * fun();
int main() { char * linijka = fun(); delete[] linijka; return 0; }
char * fun() { return new char *[ 10 ]; }
|
|
Luq |
» 2018-03-29 23:40:45 |
|
krzychna Temat założony przez niniejszego użytkownika |
» 2018-03-29 23:59:53 Wiem, w takim razie jak dynamicznie stworzyć tablice wskaźników? |
|
michal11 |
» 2018-03-30 00:07:20 Poprawnie? return std::vector < std::string >( 10 ); Według treści zadania? Zrobiłeś wszystko prawie dobrze tylko tam gdzie masz pojedynczy wskaźnik musisz dać podwójny, oprócz alokacji. #include <iostream> using namespace std; char ** fun();
int main() { char ** linijka = fun(); delete[] linijka; return 0; }
char ** fun() { return new char *[ 10 ]; }
musisz pamiętać tylko o tym, że elementy twojej stworzonej tablicy na nic nie wskazują, czyli linijka[0] nie skazuje na nic, jeżeli chcesz tam trzymać jakiś napis musisz najpierw zaalokować na niego miejsce. W takim wypadku musisz też pamiętać o poprawnym zwalnianiu pamięci, czyli najpierw elementy tablicy linijka a na końcu sama tablica linijka. |
|
Luq |
» 2018-03-30 00:09:42 Przecież tworzysz dynamiczną tablicę wskaźników. Problem jest w typie, który funkcja deklaruje, że zwraca. Powinien być char ** , a jest char * . |
|
krzychna Temat założony przez niniejszego użytkownika |
» 2018-03-30 09:10:40 Dzięki :) zamykam. |
|
« 1 » |