배열 선언Array Declarations

"배열 선언"은 배열의 이름을 지정하고 배열 요소의 형식을 지정합니다.An "array declaration" names the array and specifies the type of its elements. 배열 선언은 배열의 요소 수를 정의할 수도 있습니다.It can also define the number of elements in the array. 배열 형식이 있는 변수는 배열 요소의 형식에 대한 포인터로 간주됩니다.A variable with array type is considered a pointer to the type of the array elements.

구문Syntax

declaration:declaration:
declaration-specifiers init-declarator-list opt;declaration-specifiers init-declarator-list opt;

init-declarator-list:init-declarator-list:
init-declaratorinit-declarator

init-declarator-list , init-declaratorinit-declarator-list , init-declarator

init-declarator:init-declarator:
declaratordeclarator

declarator = initializerdeclarator = initializer

declarator:declarator:
pointer optdirect-declaratorpointer optdirect-declarator

direct-declarator:direct-declarator:
direct-declarator [ constant-expression opt]direct-declarator [ constant-expression opt]

constant-expression은 선택 사항이기 때문에 구문에는 두 가지 형태가 있습니다.Because constant-expression is optional, the syntax has two forms:

  • 첫 번째 형태는 배열 변수를 정의합니다.The first form defines an array variable. 대괄호 안의 constant-expression 인수는 배열의 요소 수를 지정합니다.The constant-expression argument within the brackets specifies the number of elements in the array. constant-expression(있는 경우)에는 정수 계열 형식과 0보다 큰 값이 있어야 합니다.The constant-expression, if present, must have integral type, and a value larger than zero. 각 요소에는 type-specifier로 지정된 형식이 있으며, 형식은 void를 제외한 모든 형식이 될 수 있습니다.Each element has the type given by type-specifier, which can be any type except void. 배열 요소는 함수 형식일 수 없습니다.An array element cannot be a function type.

  • 두 번째 형태는 다른 곳에 정의된 변수를 선언합니다.The second form declares a variable that has been defined elsewhere. 이 형태에서는 대괄호로 묶은 constant-expression 인수가 생략되지만 대괄호는 생략되지 않습니다.It omits the constant-expression argument in brackets, but not the brackets. 배열을 이전에 초기화했거나, 배열을 매개 변수로 선언했거나, 프로그램의 다른 곳에서 명시적으로 정의된 배열에 대한 참조로 배열을 선언한 경우에만 이 형태를 사용할 수 있습니다.You can use this form only if you previously have initialized the array, declared it as a parameter, or declared it as a reference to an array explicitly defined elsewhere in the program.

    두 형태 모두에서 direct-declarator는 변수의 이름을 지정하고 변수의 형식을 수정할 수 있습니다.In both forms, direct-declarator names the variable and can modify the variable's type. direct-declarator 뒤에 오는 대괄호([ ])는 선언자를 배열 형식으로 수정합니다.The brackets ([ ]) following direct-declarator modify the declarator to an array type.

    형식 한정자는 배열 형식의 개체에 대한 선언에 나타날 수 있지만 한정자는 배열 자체가 아니라 요소에 적용됩니다.Type qualifiers can appear in the declaration of an object of array type, but the qualifiers apply to the elements rather than the array itself.

    이 형태에서는 배열 선언자 뒤에 대괄호로 묶은 상수 식 목록을 추가하여 배열의 배열("다차원" 배열)을 선언할 수 있습니다.You can declare an array of arrays (a "multidimensional" array) by following the array declarator with a list of bracketed constant expressions in this form:


type-specifier  
declarator [constant-expression] [constant-expression] ...  

대괄호로 묶은 각 constant-expression은 지정된 차원의 요소 수를 정의합니다. 2차원 배열에는 대괄호로 묶은 식이 2개 있고 3차원 배열에는 3개가 있는 식입니다.Each constant-expression in brackets defines the number of elements in a given dimension: two-dimensional arrays have two bracketed expressions, three-dimensional arrays have three, and so on. 배열을 초기화했거나, 배열을 매개 변수로 선언했거나, 프로그램의 다른 곳에서 명시적으로 정의된 배열에 대한 참조로 배열을 선언한 경우 첫 번째 상수 식을 생략할 수 있습니다.You can omit the first constant expression if you have initialized the array, declared it as a parameter, or declared it as a reference to an array explicitly defined elsewhere in the program.

더 복잡한 선언자 해석에 설명된 것처럼 복잡한 선언자를 사용하여 포인터 배열을 다양한 개체 형식으로 정의할 수 있습니다.You can define arrays of pointers to various types of objects by using complex declarators, as described in Interpreting More Complex Declarators.

배열은 행별로 저장됩니다.Arrays are stored by row. 예를 들어, 다음 배열은 각각 두 행과 세 열로 구성됩니다.For example, the following array consists of two rows with three columns each:

char A[2][3];  

첫 번째 행의 세 열이 먼저 저장된 다음 두 번째 행의 세 열이 저장됩니다.The three columns of the first row are stored first, followed by the three columns of the second row. 이에 따라 마지막 첨자가 가장 빠르게 변화합니다.This means that the last subscript varies most quickly.

배열의 개별 요소를 참조하려면 후위 연산자에 설명된 것처럼 첨자 식을 사용하세요.To refer to an individual element of an array, use a subscript expression, as described in Postfix Operators.

예제Examples

다음 예제에서는 배열 선언을 보여 줍니다.These examples illustrate array declarations:

float matrix[10][15];  

matrix라고 하는 2차원 배열에는 150개의 요소가 있으며, 각각의 요소는 float 형식입니다.The two-dimensional array named matrix has 150 elements, each having float type.

struct {  
    float x, y;  
} complex[100];  

이것은 구조체 배열의 선언입니다.This is a declaration of an array of structures. 이 배열에는 요소가 100개 있습니다. 각 요소는 두 멤버가 포함된 구조체입니다.This array has 100 elements; each element is a structure containing two members.

extern char *name[];  

이 문은 char에 대한 포인터 배열의 형식과 이름을 선언합니다.This statement declares the type and name of an array of pointers to char. name의 실제 정의는 다른 곳에서 발생합니다.The actual definition of name occurs elsewhere.

Microsoft 전용Microsoft Specific

배열의 최대 크기를 보유하는 데 필요한 정수의 형식은 size_t의 크기입니다.The type of integer required to hold the maximum size of an array is the size of size_t. 헤더 파일 STDDEF.H에 정의된 size_t는 0x00000000~0x7CFFFFFF 범위의 unsigned int입니다.Defined in the header file STDDEF.H, size_t is an unsigned int with the range 0x00000000 to 0x7CFFFFFF.

Microsoft 전용 종료END Microsoft Specific

참고 항목See Also

선언자 및 변수 선언Declarators and Variable Declarations