2016-06-23 18 views
6

Utworzyłem const const tablicę wskaźników tak:C++ wskaźnik do tablicy const const wskaźniki

const char* const sessionList[] = { 
    dataTable0, 
    dataTable1, 
    dataTable2, 
    dataTable3 
}; 

Jaka jest poprawna składnia dla zwykłego const wskaźnik do tej tablicy? Myślałem, że będzie to const char**, ale kompilator myśli inaczej.

+0

Technicznie Twój 'const char * *' byłaby równoważna macierzy, gdyż to właśnie macierzy ulegnie rozpadowi, kiedy przeszedł do funkcji. Aby uzyskać wskaźnik do tablicy, potrzebujesz dodatkowego ogranicznika. Lub coś w stylu 'const char * [] *', ale nie jestem pewien czy ten jest ważny – KABoissonneault

+1

Wygląda na to, że typ '& sessionList' to' const char * const (*) [4] ', ale ja ' m walczy o zadeklarowanie zmiennej z takim typem. – KABoissonneault

+0

Należy wyjaśnić, czy chcesz wskaźnik do tablicy lub wskaźnik do elementu tablicy. Te dwie rzeczy są różne. – juanchopanza

Odpowiedz

3
const char* const sessionList[] = { ... }; 

jest lepiej napisany jako:

char const* const sessionList[] = { ... }; 

Typ sessionList[0] to char const* const.
Dlatego typ &sessionList[0] to char const* const*.

Można użyć:

char const* const* ptr = &sessionList[0]; 

lub

char const* const* ptr = sessionList; 

który deklaruje wskaźnik do elementów sessionList. Jeśli chcesz zadeklarować wskaźnik do całej tablicy, to musi być:

char const* const (*ptr)[4] = &sessionList; 
2

Ten sam typ jak zgłoszone do elementów tablicy, z dodatkowym * dodania:

const char* const * 
+1

Ale to nie jest wskaźnik do tablicy. – juanchopanza

+0

@juanchopanza: Jest to typ wskaźnika, który może wskazywać na dowolny element tablicy, który jest * zwykle * tym, co ludzie rozumieją przez termin "wskaźnik do tablicy" - typ wskaźnika, który zmienia się w nazwę tablicy, gdy jej używasz . –

6

Jeśli rzeczywiście potrzebują wskaźnik do tablicy, jak sugeruje tytuł, to jest składnia:

const char* const (*ptr)[4] = &sessionList; 
Powiązane problemy