Оператор индекса:
postfix-expression [ expression ]
Заметки
Выражение, которое может также быть постфиксная (первичный) индекс за оператором []определяет индексирование массива.
Дополнительные сведения об управляемых массивов см. в разделе массив (Visual C++).
Обычно значение, представленное by постфиксное выражение значение указателя, например идентификатор массива. Выражение объединенное значение (в том числе перечисленных типов).Однако все, синтаксически, что одно из выражений типа указателя и другого объединенного типа.Таким образом объединенное значение может иметь постфиксное выражение позиция и значение указателя могли бы быть в брекетах в Выражение или позиция индекса.Рассмотрим следующий фрагмент кода:
int nArray[5] = { 0, 1, 2, 3, 4 };
cout << nArray[2] << endl; // prints "2"
cout << 2[nArray] << endl; // prints "2"
В предыдущем примере выражение nArray[2] идентичны 2[nArray].Причина в том, что результат выражения индекса e1**[** e2 ] предоставляет следующим образом:
* ((e2) + **(**e1))
Адрес созданного выражением нет e2 байты из адреса e1.Скорее, адрес масштабируется для создания следующий объект в массиве e2.Примеры.
double aDbl[2];
Address aDb[0] и aDb[1] 8 байт врозь - размер объекта типа Двойное с плавающей запятой.Это масштабирование в соответствии с типом объектов сделано автоматически определяется языком C++ и in аддитивные операторы в которых обсуждаются сложение и вычитание операндов типа указателя.
Выражение индекса может также иметь несколько нижние индексы следующим образом:
expression1 [expression2] [expression3]…
Выражения индекса связывают слева направо.Самое левое выражение индекс expression1**[expression2], является первым.Адрес, результаты из добавление expression1 и expression2 формы выражение указателя. then expression3 добавляет к данному выражению указателя для формирования новое выражение указателя и т д до тех пор, пока не будет добавлено последнее выражение индекса.Косвенный оператор (***) применяет после последнего subscripted выражение вычисляется, если конечное значение указателя не будет обеспечиваться тип массива.
Выражения с несколькими подстрочными ссылаются на элементы многомерных массивов.Многомерный массив массив, элементы которого массивы.например, первый элемент трехмерного массива массив с 2 измерениями.В следующем примере объявляется и инициализирует простой двумерный массив символов.
// expre_Subscript_Operator.cpp
// compile with: /EHsc
#include <iostream>
using namespace std;
#define MAX_ROWS 2
#define MAX_COLS 2
int main() {
char c[ MAX_ROWS ][ MAX_COLS ] = { { 'a', 'b' }, { 'c', 'd' } };
for ( int i = 0; i < MAX_ROWS; i++ )
for ( int j = 0; j < MAX_COLS; j++ )
cout << c[ i ][ j ] << endl;
}
См. также
Ссылки
Operator precedence and Associativity