• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Podwójne wskaźniki i tablice - składnia

0 głosów
416 wizyt
pytanie zadane 21 grudnia 2019 w C i C++ przez Agnes Użytkownik (990 p.)

Nie rozumiem o co chodzi w tym zapisie i dlaczego w ogóle jest dozwolony:

char* (*f)[];

I skoro jest dozwolony to dlaczego nie można zrobić tak:

char** f[][];

I przy okazji co zrobić kiedy nie znam wymiarów tej tablicy i nie mogę korzystać z vectora?

2 odpowiedzi

0 głosów
odpowiedź 21 grudnia 2019 przez mokrowski Mędrzec (158,960 p.)

W pierwszym przypadku:

char* (*f)[];

, f jest wskaźnikiem na tablicę zawierającą wskaźniki na char. Czyli tłumacząc najprościej, wskaźnik na tablicę z napisami.

W drugim przypadku:

char** f[][];

, składanie jest nieprawidłowa bo tablica może nie mieć jednego wymiaru (tego na najwyższym poziomie), ale nie może nie mieć wszystkich wymiarów bo nie wiadomo jak ją obsłużyć w pamięci.

0 głosów
odpowiedź 21 grudnia 2019 przez Michałełe Nałogowiec (25,600 p.)

Ten pierwszy zapisz czytamy tak:

f jest wskaźnikiem na tablicę wskaźników na typ char.

Jeśli chodzi o ten drugi kod, to zapis ** oznacza wskaźnik na wskaźnik.

Co miało to oznaczać w Twoim kodzie? Tablicę dwuwymiarową, czy coś innego?

I przy okazji co zrobić kiedy nie znam wymiarów tej tablicy i nie mogę korzystać z vectora?

Jeśli nie wiesz ile będzie potrzebne pamięci, to zrób jakąś strasznie dużą tablicę ( jest to trochę słabe, ale inaczej nie idzie)

komentarz 21 grudnia 2019 przez mokrowski Mędrzec (158,960 p.)

Jeśli nie wiesz ile będzie potrzebne pamięci, to zrób jakąś strasznie dużą tablicę ( jest to trochę słabe, ale inaczej nie idzie)

Że jak? Co to za pomysł?

Tu wystarczy char * * f; i odpowiednie alokowanie pamięci.

Podobne pytania

0 głosów
1 odpowiedź 395 wizyt
pytanie zadane 1 grudnia 2022 w C i C++ przez Pysa6 Nowicjusz (220 p.)
0 głosów
1 odpowiedź 502 wizyt
pytanie zadane 7 września 2022 w C i C++ przez benny13 Obywatel (1,150 p.)
0 głosów
0 odpowiedzi 833 wizyt

93,695 zapytań

142,613 odpowiedzi

323,225 komentarzy

63,226 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj

Twierdza Linux. Bezpieczeństwo dla dociekliwych

Aby uzyskać rabat -10%, użyjcie kodu pasja-linux, wpisując go w specjalne pole w koszyku.

...