1차원 배열One-Dimensional Arrays

대괄호([ ]) 안의 식이 뒤따르는 후위 식은 배열 개체 요소의 첨자가 있는 표현입니다.A postfix expression followed by an expression in square brackets ([ ]) is a subscripted representation of an element of an array object. 첨자식은 다음과 같이 표현될 때 postfix-expression을 벗어나는 expression 위치의 주소에 있는 값을 나타냅니다.A subscript expression represents the value at the address that is expression positions beyond postfix-expression when expressed as


postfix-expression  
[  
expression  
]  

일반적으로 postfix-expression이 나타내는 값은 배열 식별자와 같은 포인터 값이며 expression은 정수 계열 값입니다.Usually, the value represented by postfix-expression is a pointer value, such as an array identifier, and expression is an integral value. 그러나 구문적 요구 사항은 식 중 하나가 포인터 형식이고 다른 하나는 정수 계열 형식이어야 한다는 것 밖에 없습니다.However, all that is required syntactically is that one of the expressions be of pointer type and the other be of integral type. 따라서 정수 계열 값은 postfix-expression 위치에 있을 수 있으며 포인터 값은 expression의 괄호 안 또는 첨자 위치에 있을 수 있습니다.Thus the integral value could be in the postfix-expression position and the pointer value could be in the brackets in the expression, or "subscript," position. 예를 들어 다음 코드는 올바릅니다.For example, this code is legal:

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

첨자식은 일반적으로 배열 요소를 참조하는 데 사용되지만 포인터에도 첨자를 적용할 수 있습니다.Subscript expressions are generally used to refer to array elements, but you can apply a subscript to any pointer. 값의 순서에 관계없이 expression은 대괄호([ ])로 묶어야 합니다.Whatever the order of values, expression must be enclosed in brackets ([ ]).

첨자식은 정수 계열 값을 포인터 값에 더한 다음 간접 참조 연산자(\)를 결과에 적용하여 평가됩니다.The subscript expression is evaluated by adding the integral value to the pointer value, then applying the indirection operator (****) to the result. 간접 참조 연산자에 대한 자세한 내용은 간접 및 주소 연산자를 참조하세요. 1차원 배열의 경우 a가 포인터이고 b가 정수라고 가정할 때 다음 네 식은 동일합니다.(See Indirection and Address-of Operators for a discussion of the indirection operator.) In effect, for a one-dimensional array, the following four expressions are equivalent, assuming that a is a pointer and b is an integer:

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

더하기 연산자(가감 연산자 참조)에 대한 변환 규칙에 따라 정수 계열 값은 포인터로 주소가 지정된 형식의 길이를 곱하여 주소 오프셋으로 변환됩니다.According to the conversion rules for the addition operator (given in Additive Operators), the integral value is converted to an address offset by multiplying it by the length of the type addressed by the pointer.

예를 들어 line 식별자가 int 값의 배열을 참조하는 경우,For example, suppose the identifier line refers to an array of int values. 다음 절차는 첨자식 line[ i ]를 평가하는 데 사용됩니다.The following procedure is used to evaluate the subscript expression line[ i ]:

  1. 정수 값 iint 항목의 길이로 정의된 바이트 수와 곱합니다.The integer value i is multiplied by the number of bytes defined as the length of an int item. 변환된 i의 값은 i int개의 위치를 나타냅니다.The converted value of i represents i int positions.

  2. 이 변환된 값을 원래 포인터 값(line)에 더하여 line으로부터 i int개 위치만큼 떨어져 있는 주소를 생성합니다.This converted value is added to the original pointer value (line) to yield an address that is offset i int positions from line.

  3. 간접 참조 연산자가 새 주소에 적용됩니다.The indirection operator is applied to the new address. 결과는 해당 위치에 있는 배열 요소의 값입니다(직관적으로 line [ i ]).The result is the value of the array element at that position (intuitively, line [ i ]).

    첨자식 line[0]line이 나타내는 주소로부터의 오프셋이 0이므로 line의 첫 번째 요소 값을 나타냅니다.The subscript expression line[0] represents the value of the first element of line, since the offset from the address represented by line is 0. 마찬가지로 line[5]와 같은 식은 line으로부터 5개 위치만큼 떨어져 있는 요소나 배열의 6번째 요소를 참조합니다.Similarly, an expression such as line[5] refers to the element offset five positions from line, or the sixth element of the array.

참고 항목See Also

아래 첨자 연산자:Subscript Operator: