다음을 통해 공유


배열 선언

"배열 선언"은 배열의 이름을 지정하고 해당 요소의 형식을 지정합니다. 배열의 요소 수를 정의할 수도 있습니다. 배열 형식의 변수는 배열 요소의 형식에 대한 포인터로 간주됩니다.

문법

declaration:
declaration-specifiers init-declarator-list 선택;

init-declarator-list:
init-declarator
init-declarator-list , init-declarator

init-declarator:
declarator
declarator = initializer

declarator:
pointer 선택direct-declarator

direct-declarator:
direct-declarator [ constant-expression 선택]

선택 사항이기 때문에 constant-expression 구문에는 다음 두 가지 형식이 있습니다.

  • 첫 번째 폼은 배열 변수를 정의합니다. 대괄호 안의 인수는 constant-expression 배열의 요소 수를 지정합니다. constant-expression있는 경우 정수 계열 형식과 0보다 큰 값이 있어야 합니다. 각 요소에는 지정된 type-specifier형식이 있으며, 이 형식은 을 제외한 void모든 형식일 수 있습니다. 배열 요소는 함수 형식일 수 없습니다.

  • 두 번째 양식은 다른 곳에서 정의된 변수를 선언합니다. 대괄호로 된 인수는 생략하지만 대괄호는 생략 constant-expression 하지 않습니다. 이전에 배열을 초기화하거나, 매개 변수로 선언하거나, 프로그램의 다른 곳에서 명시적으로 정의된 배열에 대한 참조로 선언한 경우에만 이 양식을 사용할 수 있습니다.

두 양식 direct-declarator 에서 변수의 이름을 지정하고 변수의 형식을 수정할 수 있습니다. 다음 direct-declarator 의 대괄호([ ])는 선언자를 배열 형식으로 수정합니다.

형식 한정자는 배열 형식의 개체 선언에 나타날 수 있지만 한정자는 배열 자체가 아닌 요소에 적용됩니다.

이 형식의 대괄호로 묶인 상수 식 목록을 사용하여 배열의 배열("다차원" 배열)을 선언할 수 있습니다.

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

constant-expression 대괄호 안에는 지정된 차원의 요소 수가 정의됩니다. 2차원 배열에는 두 개의 대괄호 식이 있고, 3차원 배열에는 3개 등이 있습니다. 배열을 초기화하거나, 매개 변수로 선언하거나, 프로그램의 다른 위치에서 명시적으로 정의된 배열에 대한 참조로 선언한 경우 첫 번째 상수 식을 생략할 수 있습니다.

더 복잡한 선언자 해석에 설명된 대로 복잡한 선언자를 사용하여 다양한 형식의 개체에 대한 포인터 배열을 정의할 수 있습니다.

배열은 행별로 저장됩니다. 예를 들어 다음 배열은 각각 세 개의 열이 있는 두 개의 행으로 구성됩니다.

char A[2][3];

첫 번째 행의 세 열이 먼저 저장되고 그 뒤에 두 번째 행의 세 개의 열이 저장됩니다. 즉, 마지막 아래 첨자는 가장 빠르게 달라집니다.

배열의 개별 요소를 참조하려면 후위 연산자에 설명된 대로 아래 첨자 식을 사용합니다.

예시

다음 예제에서는 배열 선언을 보여 줍니다.

float matrix[10][15];

명명된 matrix 2차원 배열에는 각각 형식이 있는 float 150개의 요소가 있습니다.

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

이 예제는 구조체 배열의 선언입니다. 이 배열에는 100개 요소가 있습니다. 각 요소는 두 멤버를 포함하는 구조체입니다.

extern char *name[];

이 문은 포인터 배열의 형식과 이름을 선언합니다 char. 실제 정의 name 는 다른 곳에서 발생합니다.

Microsoft 전용

배열의 최대 크기를 유지하는 데 필요한 정수의 형식은 크기입니다 size_t.

Microsoft 전용 종료

참고하십시오

선언자 및 변수 선언