46. 배열 선언문

A) 배열을 선언할 때는 원소 개수를 잊지 마라. B) 네. 선언과 초기화를 같이 하면 원소 개수를 나타내지 않아도 되지만 배열 범위를 벗어나는 것을 확인하는 습관을 갖기 위해 원소 개수를 명시하고 있어요.

C언어에서 배열을 선언할 때 컴파일러에게 선언하는 것이 배열임을 알려주는 [ ]지시 연산자를 사용해요.
포인터를 선언할 때는 포인터임을 알려주는 * 지시 연산자를 사용해요.

배열을 선언하려면 컴파일러에게 선언하는 것이 배열임을 알려주는 [ ]지시 연산자 내부에 원소 개수를 지정하세요.
그리고 배열 이름과 지시 연산자, 원소 개수를 제외한 나머지 부분이 원소 형식이예요.
포인터도 변수 이름과 지시 연산자를 제외한 나머지 부분이 원소 형식이죠.

int arr[10]; 구문은 원소 형식이 int 이고 원소 개수가 10인 배열 arr을 나타내는 선언문이예요.
컴파일러는 int 형식의 메모리 크기 X 원소 개수의 메모리를 할당하고 배열명은 할당한 메모리 주소를 의미한답니다.
즉 배열명은 첫 번째 원소의 메모리 주소를 의미하여 int 형식의 포인터 상수처럼 사용할 수 있어요.

배열을 선언할 때는 여러 개의 원소의 값을 지정할 수 있어요.
배열 선언문에서 초기값을 지정하려면 { } 연산자에 초기값을 콤마로 구분하여 나열하세요.
그리고 초기값을 지정하지 않은 멤버는 컴파일러가 0으로 초기화 해 준답니다.
주의할 사항은 배열 선언문에서 초기값을 지정하지 않았을 때는 초기화해 주지 않는다는 거예요.

그리고 배열을 선언하면서 초기화 구문을 사용하면 원소 개수를 나타내지 않을 수 있어요.
이 때는 초기화한 개수가 원소 개수가 되요.
하지만 명확하게 원소 개수를 지정하는 것이 프로그램의 논리적 버그를 줄일 수 있는 좋은 습관이예요.
그리고 배열은 컴파일 시점에 메모리 크기를 결정하여 동작 중에 배열의 크기를 바꿀 수 없어요.
만약 크기를 중간에 바꾸길 원하면 동적 메모리 할당을 사용하세요.
책의 뒷 부분에서 동적 메모리 할당은 배울거예요.

◈ 배열의 초기화 예

◈ 실행 결과

 

◈ 기본 연습
1. 한 학생의 국어 성적, 영어 성적, 수학 성적을 관리하는 배열을 선언하세요.
그리고 초기값으로 국어 성적은 80, 영어 성적은 60, 수학 성적은 90으로 지정하고 각 원소의 값을 출력하세요.

2. 다음의 출력 결과를 예측하시오.

3. 세 학생의 국어 성적, 영어 성적, 수학 성적을 관리하는 배열을 선언하세요.
그리고 세 명의 성적을 입력받아 과목별 합계와 평균을 출력하시오.
그리고 학생별로 합계와 평균을 출력하시오.


동영상 강의

[C언어 무료 동영상 강의] 45. 배열과 포인터 개요 46. 배열 선언문