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

const char * const * array

Ostatnio zmodyfikowano 2017-08-10 16:25
Autor Wiadomość
Anim
Temat założony przez niniejszego użytkownika
const char * const * array
» 2017-08-09 15:37:58
Przeglądając dzisiejsze wpisy z forum napotkałem taki twór:

C/C++
const char * const * array;

, którego użyła @Monika90 do wytłumaczenia problemu "Jak uproscic iterowanie po tablicy statycznej?"


I chciałbym spytać: co to w ogóle oznacza? ^^ może @Monika90 ;>
P-163888
garlonicon
» 2017-08-09 17:45:34
C/C++
typedef const char * raz;
typedef raz const dwa;
typedef dwa * trzy;
Którego typu nie rozumiesz? Raz, dwa czy trzy?
P-163889
pekfos
» 2017-08-09 18:10:48
consttyp wskazywany * constwskaźnik. Nie ma tu nic do rozumienia.
C/C++
char const * p; // wskaźnik na stały char
char const * const p; // stały wskaźnik na stały char
char const * const * p; // wskaźnik na stały wskaźnik na stały char
char const * const * const p; // stały wskaźnik na stały wskaźnik na stały char
//itd..
Każdy const jest opcjonalny, więc jeśli musisz, to możesz nawet mieć i tak:
C/C++
char * const *** const * const ** const * const *** const x;
P-163890
Anim
Temat założony przez niniejszego użytkownika
» 2017-08-10 09:11:31
@pekfos dzięki bardzo :)

@garlonicon jesteś typem nauczyciela, który nie lubi swojej pracy i uczniowie go wkurzają, co nie?
P-163893
garlonicon
» 2017-08-10 16:25:10
jesteś typem nauczyciela, który nie lubi swojej pracy
1. Możliwe, że zbyt ostro potraktowałem regułę dotyczącą unikania gotowych rozwiązań i dawania pojedynczych wskazówek prowadzących do celu.
2. Lubię swoją pracę. Gdyby było inaczej, to nie zajmowałbym się programowaniem na siłę.

i uczniowie go wkurzają
Niby dlaczego? Po prostu chciałem wiedzieć, która część wyrażenia sprawia problem, więc rozłożyłem to na trzy oddzielne części. Zwykle chodzi o stałe wskaźniki, ale wolałem się upewnić. Przy tak postawionym pytaniu równie dobrze mogłeś nie zrozumieć, co oznacza samo
const char *
.

A co do samych typów, to czasami lepiej użyć
typedef
 (a najlepiej
auto
, jeśli się da) aby uprościć sobie życie. Natomiast jeśli chodzi o stałe, to powinno się wstawiać
const
 wszędzie, gdzie coś się nie zmienia (zgodnie z regułą const correctness). Są języki, w których wszystko jest domyślnie stałe, dopóki programista nie napisze jawnie, że chce coś zmieniać, jednak w C++ na razie trzeba ciągle pamiętać o wklepywaniu
const
 we właściwych miejscach.
P-163897
« 1 »
  Strona 1 z 1