2016-06-23 4 views
6

Я создал константный массив константных указателей как так:C++ указатель на константный массив константных указателей

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

Что такое правильный синтаксис для обычного неконстантного указатель на этот массив? Я думал, что это будет const char**, но компилятор думает иначе.

+0

Технически, ваш 'Const символ *' будет эквивалентно в массив, так это то, что ваш массив будет затухать, когда прошло к функции. Вам понадобится дополнительное косвенное указание, чтобы получить указатель на массив. Или что-то вроде 'const char * [] *', но я не уверен, что он действителен – KABoissonneault

+1

Похоже, что тип '& sessionList' является' const char * const (*) [4] ', но я ' m пытается объявить переменную с таким типом. – KABoissonneault

+0

Вы знаете, хотите ли вы указатель на массив или указатель на элемент массива. Эти двое - разные вещи. – juanchopanza

ответ

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

лучше записать в виде:

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

Тип sessionList[0]: char const* const.
Следовательно, тип &sessionList[0] - char const* const*.

Вы можете использовать:

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

или

char const* const* ptr = sessionList; 

Это объявляет указатель на элементы sessionList. Если вы хотите, чтобы объявить указатель на весь массив, он должен быть:

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

Того же типа, как вы объявили для элементов массива, с дополнительным * добавил:

const char* const * 
+1

Но это не указатель на массив. – juanchopanza

+0

@juanchopanza: Это тип указателя, который может указывать на любой элемент массива, который обычно означает * то, что люди означают под термином «указатель на массив» - тип указателя, в который превращается имя массива, когда вы его используете , –

6

Если вы на самом деле нужен указатель на массив, как подсказывает ваше название, то это синтаксис:

const char* const (*ptr)[4] = &sessionList; 
Смежные вопросы