Computer >> 컴퓨터 >  >> 프로그래밍 >> C 프로그래밍

C/C++ 배열 단축 초기화 문법(Shorthand Notation) 완벽 정리

C 언어에서 배열을 초기화할 때 동일한 값이 여러 번 반복되는 경우가 자주 있습니다. 이럴 때 일일이 값을 나열하는 대신 단축 표기법(shorthand array notation)을 사용하면 코드를 훨씬 간결하게 작성할 수 있습니다.

다음 예제를 통해 그 사용법을 살펴보겠습니다.

예제 코드

#include <stdio.h>
int main() {
int array[10] = {[0 ... 3]7, [4 ... 5]6, [6 ... 9]2};
for (int i = 0; i < 10; i++)
printf("%d ", array[i]);
return 0;
}

실행 결과

7 7 7 7 6 6 2 2 2 2

코드 설명

위 프로그램에서 사용된 배열 선언 부분은 다음과 같습니다.

int array[10] = {[0 ... 3]7, [4 ... 5]6, [6 ... 9]2};

이 코드는 아래의 전체 나열 방식과 완전히 동일한 의미를 가집니다.

int array[10] = {7, 7, 7, 7, 6, 6, 2, 2, 2, 2};

즉, [시작 인덱스 ... 끝 인덱스]값 형태로 작성하면 해당 범위의 모든 요소가 지정한 값으로 한꺼번에 초기화됩니다. 이 문법은 GCC 계열 컴파일러가 지원하는 확장 기능으로, 반복되는 초깃값이 많을 때 코드의 가독성을 크게 높여 줍니다.

중간에 비어 있는 인덱스가 있을 경우

만약 배열 중간에 특정 인덱스를 지정하지 않고 건너뛰면, 해당 위치의 요소는 자동으로 0으로 채워집니다. 이는 C 언어의 기본 초기화 규칙에 따른 동작입니다.

C++에서의 동작

동일한 코드를 C++에서 컴파일해도 결과물은 같지만, 이 문법은 C++ 표준이 아닌 컴파일러 확장이기 때문에 실행 결과와 함께 경고(warning) 메시지가 출력될 수 있습니다. 따라서 표준 준수가 중요한 프로젝트라면 사용 시 주의하는 것이 좋습니다.