다음을 통해 공유


첨자 연산자: []

postfix-expression [ expression ]

설명

후위 식(기본 식이 될 수도 있음) 뒤에 첨자 연산자 **[ ]**가 오면 배열 인덱싱이 지정됩니다.

관리되는 배열에 대한 자세한 내용은 배열 (Visual C++)을 참조하십시오.

일반적으로 postfix-expression으로 표현되는 값은 배열 식별자와 같은 포인터 값이며 expression은 열거 형식을 포함한 정수 계열 값입니다. 그러나 구문적 요구 사항은 식 중 하나가 포인터 형식이고 다른 하나는 정수 계열 형식이어야 한다는 것 밖에 없습니다. 따라서 정수 계열 값은 postfix-expression 위치에 있을 수 있으며 포인터 값은 expression의 괄호 안 또는 첨자 위치에 있을 수 있습니다. 다음과 같은 코드 조각을 생각해 봅시다.

   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) )

식에서 생성된 주소는 e1 주소의 e2 바이트가 아닙니다. 대신 e2 배열의 다음 개체가 생성되도록 주소의 크기가 조정됩니다. 예를 들면 다음과 같습니다.

double aDbl[2];

aDb[0] 및 aDb[1]의 주소는 double 형식의 개체 크기인 8바이트 떨어져 있습니다. 개체 형식에 따른 이 크기 조정은 C++ 언어에 의해 자동으로 수행되며 포인터 형식 피연산자의 덧셈과 뺄셈에 대해 설명하는 덧셈 연산자에 정의되어 있습니다.

첨자 식에는 다음과 같이 여러 첨자가 있을 수도 있습니다.

expression1 [expression2] [expression3]...

첨자 식은 왼쪽에서 오른쪽으로 연결합니다. 맨 왼쪽 첨자 식인 expression1**[expression2]가 먼저 계산됩니다. expression1expression2를 추가한 결과인 주소는 포인터 식을 형성합니다. 그런 다음 이 포인터 식에 expression3이 추가되어 새 포인터 식을 형성하고 마지막 첨자 식이 추가될 때까지 계속됩니다. 최종 포인터 값이 배열 형식을 해결하지 않으면 간접 참조 연산자(***)는 마지막 첨자 식이 계산된 후 적용됩니다.

여러 첨자가 포함된 식은 다차원 배열의 요소를 참조합니다. 다차원 배열은 요소가 배열인 배열입니다. 예를 들어 3차원 배열의 첫 번째 요소는 2차원 배열입니다. 다음 예제에서는 간단한 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;
}

참고 항목

참조

후위 식

C++ 연산자

C++ 연산자, 우선 순위 및 결합성

배열 (C++)

개념

1차원 배열

다차원 배열 (C)