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

Funkcja zwracająca wskaźnik do tablicy wskaźników wskazujących na elementy typu char

Ostatnio zmodyfikowano 2018-03-30 09:10
Autor Wiadomość
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.

C/C++
#include <iostream>
using namespace std;
char * fun();

int main() {
    char * linijka = fun();
    delete[] linijka;
    return 0;
}

char * fun() {
    return new char *[ 10 ];
}

P-170350
Luq
» 2018-03-29 23:40:45
Typ zwracany to
char **
.
P-170351
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?
P-170353
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.
C/C++
#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.
P-170354
Luq
» 2018-03-30 00:09:42
return new char *[ 10 ];
Przecież tworzysz dynamiczną tablicę wskaźników. Problem jest w typie, który funkcja deklaruje, że zwraca. Powinien być
char **
, a jest
char *
.
P-170355
krzychna
Temat założony przez niniejszego użytkownika
» 2018-03-30 09:10:40
Dzięki :) zamykam.
P-170356
« 1 »
  Strona 1 z 1