Page 46 - Do it! 자료구조와 함께 배우는 알고리즘(C 언어, 3쇄)
P. 46
식 sizeof(a) / sizeof(a[0])는 요소의 자료형이나 크기에 영향을 받지 않고 배열의 요소 개수
를 구할 수 있습니다.
배열 a의 요소 개수를 sizeof(a) / sizeof(int)로 구하는 것은 안전하지 않습니다. 왜냐하면 배열의 자료형이 달라질 때
대응할 수 없기 때문입니다. 예를 들어, 배열 a의 자료형이 long형으로 달라지면 앞의 수식은 sizeof(a) / sizeof(long)으로
달라져야 합니다.
이 프로그램의 배열 a의 선언을 아래와 같이 변경하겠습니다.
int a[ ] = {1, 2, 3, 4, 5, 6};
프로그램을 컴파일하고 실행하면 변수 na는 6으로 초기화되 배열 a의 요소 개수는 6입니다.
고, 6개의 요솟값이 출력됩니다. a[0] = 1
a[1] = 2
chap02/intary_init2.c는 본문에 소개되지 않은 파일입니다. 소스를 다운로드해 a[2] = 3
직접 실행해 보세요. a[3] = 4
a[4] = 5
a[5] = 6
이 책에서는 배열을 그림 2-4와 같이 표기합니다.
a 0 1 처음 b
1 2 인덱스 0 1 2 3 4
2 3 요솟값 1 2 3 4 5
3 4
4 5 끝 처음 끝
[그림 2-4] 배열의 표기
위 그림에서 네모 칸 안에 쓰인 숫자나 문자가 요솟값이고, 네모 칸의 왼쪽 또는 위쪽에 쓰인
작은 숫자가 인덱스 값입니다. 그림 a 처럼 요소를 세로로 정렬할 때는 인덱스가 작은 값을
위쪽에, 그림 b 처럼 요소를 가로로 정렬할 때는 인덱스가 작은 값을 왼쪽에 오도록 합니다.
앞에서 배웠듯이 배열을 선언할 때 요소 개수는 상수만 사용합니다. 그러므로 아래와 같이 배
열을 선언하면 안 됩니다.
int n;
printf("요소 개수 : ");
X
scanf("%d", &n);
int a[n]; /* 컴파일 오류 : n은 상수식이 아닙니다. */
이 프로그램을 컴파일하면 오류가 발생합니다. 요소 개수를 상수가 아닌 변수 n을 사용했기
46 C 알고리즘