1 차원 배열

식은 대괄호에서 뒤 후 위 식 () 요소를 array 개체의 아래 첨자 표현입니다.아래 첨자 식이 주소에 있는 값을 나타내는 이외의 위치 후 위 식 로 표시 되는 경우

postfix-expression [ expression ]

표시 값은 일반적으로, 후 위 식 는 배열 식별자와 같은 포인터 값입니다 및 정수 값입니다.그러나 모든 구문적으로 식 중 하나 포인터 형식이 고 다른 정수 계열 형식 이어야 필수입니다.정수 계열 값에 따라서 수 있습니다의 후 위 식 위치 및 포인터 값에 괄호 안의 수는 , 또는 "첨자" 위치.예를 들어,이 코드는 불법입니다.

// one_dimensional_arrays.c
int sum, *ptr, a[10];
int main() {
   ptr = a;
   sum = 4[ptr];
}

아래 첨자 식이 배열 요소를 참조 하려면 일반적으로 사용 되지만 아래 첨자는 포인터에 적용할 수 있습니다.값을 어떤 순서 대괄호로 묶어야 합니다 ().

포인터 값을 정수 계열 값을 추가 합니다. 다음에 간접 참조 연산자를 적용 하 여 아래 첨자 식이 계산 됩니다 (*) 결과입니다.(참조 하십시오 간접 참조 및 주소 연산자 에 간접 참조 연산자에 대 한 합니다.) 실제로 1 차원 배열의 경우, 다음과 같은 네 가지 식 동등한 것으로 간주 됩니다 a 포인터입니다 및 b 사이의 정수입니다.

a[b]
*(a + b)
*(b + a)
b[a]

더하기 연산자에 대 한 변환 규칙에 따라 (에 지정 된 추가 연산자), 정수 계열 값 형식의 포인터를 사용 하 여 주소가 지정 된 길이로 곱하여 주소 오프셋을 변환 됩니다.

예를 들어 식별자를 가정 line 의 배열을 의미 int 값입니다.다음은 아래 첨자 식이 계산 하는 데 사용 됩니다 line[ i ]:

  1. 정수 값 i 을 정의 하는 바이트 수를 곱한 것은 int 항목입니다.변환 된 값을 i 를 나타내는 iint 위치 합니다. 

  2. 원래 포인터 값으로 변환 된 값이 추가 됩니다 (line) 오프셋 주소를 iint 에서 위치 line. 

  3. 간접 참조 연산자 새 주소에 적용 됩니다.결과 값의 해당 위치에 배열 요소입니다 (직관적, line [ i ]).

아래 첨자 식이 line[0] 이후에 오프셋을 표시 하는 주소 줄의 첫 번째 요소 값을 나타내는 line 은 0입니다.마찬가지로 같은 식 line[5] 줄에서 요소의 오프셋 5 위치 또는 배열의 6 번째 요소를 참조 합니다.

참고 항목

참조

아래 첨자 연산자:]