더북(TheBook)

6.1.3 배열 길이

배열은 두 가지가 있다. 고정 길이 배열(fixed-length array, FLA)C가변 길이 배열(variable-length array, VLA)C이다. FLA는 C 언어가 처음 나올 때부터 있던 기능이며, 다른 프로그래밍 언어에서도 동일하게 작동한다. VLA는 C99부터 도입된 C 언어 고유의 기능이며 사용하는 데 제약이 좀 있다.

TAKEAWAY 6.6 VLA는 초기자를 가질 수 없다.

TAKEAWAY 6.7 VLA를 함수 밖에서 선언할 수 없다.

그럼 먼저 이런 제약 사항에 영향을 받지 않는 FLA부터 살펴보자.

TAKEAWAY 6.8 FLA의 길이는 정수형 상수 표현식(ICE)이나 초기자로 결정한다.

첫 번째 방법은 (5.6.2절에서 소개한) ICE를 이용하여 컴파일 시간에 길이를 알 수 있다. ICE에서 타입에 대한 제약은 없다. 정수 타입이라면 어떤 것도 가능하다.

TAKEAWAY 6.9 배열 길이는 반드시 양수여야 한다.

FLA과 관련하여 또 다른 특이한 점은 길이를 지정하지 않은다는 것이다. 배열 선언문에서 []를 비워 두면 초기자에 의해 길이가 결정된다.

double E[] = { [3] = 42.0, [2] = 37.0, };
double F[] = { 22.0, 17.0, 1, 0.5, };
신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.