728x90
728x90
배열(Array)
배열(Array)
- 많은 양의 데이터를 한꺼번에 일괄적으로 처리하고자 할 때, 유용하게 사용될 수 있는 변수들의 모임
- 배열 선언 방법
int a[10]; // 자료형 배열_이름[배열_길이]
- 배열의 각각의 요소 a[0], a[1], a[2], …, a[9] 를 요소(Element)라고 한다.
- 배열 각각의 값은 대괄호([]) 안의 숫자로 나타내는데, 이를 배열의 인덱스(Index) 또는 첨자라고 한다.
배열의 선언 방법
방법 ①
int a[5] = { 1, 2, 3, 4, 5 };
- 배열의 길이와 요소를 선언과 동시에 초기화 해주는 방법이다.
방법 ②
int b[] = { 1, 2, 3, 4, 5 };
- 배열의 길이는 초기화하지 않고, 배열의 요소를 선언과 동시에 초기화 해주는 방법이다.
- 프로그램은 초기화 데이터가 5개이므로 자동으로 배열 b의 길이를 5로 할당하고, 배열의 요소에 값을 초기화한다.
- 이 방법은 배열을 처음에 선언할 때만 가능하다는 점에 유의한다.
1 | 2 | 3 | 4 | 5 |
방법 ③
int c[5];
- 배열의 길이는 초기화하고, 요소를 초기화하지 않는 방법이다.
- 배열을 선언하게 되면 프로그램은 정수형 데이터를 저장하기 위한 연속된 메모리의 공간을 찾아서 메모리 할당이 발생하게 된다.
- 이 때, 할당된 메모리 공간은 초기화되지 않기 때문에 쓰레기 값(Garbage Value)으로 채워진다.
? | ? | ? | ? | ? |
방법 ④
int d[5] = { 0 };
- 배열의 길이와 요소를 선언과 동시에 초기화 하지만, 1개의 요소만 선언하는 방법이다.
- 이 때, 모든 배열의 요소 d[0], d[1], d[2], d[3], d[4] 는 0으로 초기화 된다.
0 | 0 | 0 | 0 | 0 |
방법 ⑤
int e[5] = { 1, 2 };
- 배열의 길이와 요소를 선언과 동시에 초기화 하지만, 2개 이상, 배열의 길이 미만의 요소만 선언하는 방법이다.
- e[0]의 요소는 1로, e[1]의 요소는 2로 초기화 된다.
- 배열의 길이보다 초기화 데이터의 개수가 적을 때는 처음 초기화 값을 제외한 나머지 배열 요소들의 값은 모두 0으로 초기화 된다.
1 | 2 | 0 | 0 | 0 |
- 만약 할당된 배열의 길이보다 초기화하고자 하는 데이터가 많다면, 컴파일러는 "error: too many initializers' 라는 오류 메시지를 출력한다.
사용 시 주의할 점
- 배열에 데이터를 입력할 때, 서식 문자 뒤에 한 칸의 공백을 줄 경우, 마지막 데이터를 입력받고 나서 CPU는 뭔가 입력받을 데이터가 더 있다고 생각하기 때문에 다음 과정을 진행하지 않고 계속 입력 대기 상태에 놓이게 된다.
- scanf() 문의 서식 문자에서 "%d" 와 "%lf" 는 화이트 스페이스(공백(Space), 탭(Tab), 엔터(Enter))는 입력 받지 않고 건너뛰는 속성을 갖고 있다. ("%c" 는 해당되지 않는다.)
- "%d" 와 같이 공백이 없거나, "% d" 와 같이 앞에 공백이 들어가는 것은 괜찮다.
- 따라서 데이터를 입력 받을 때, scanf() 문의 서식 문자 다음에 공백이 들어가지 않도록 주의해야 한다.
#include <stdio.h>
int main() {
int ary[5];
scanf("%d %d %d %d %d ", &ary[0], &ary[1], &ary[2], &ary[3], &ary[4]); // 맽 끝에 공백을 줄 경우
for (int i = 0; i < 5; i++) {
printf("%d ", ary[i]);
}
return 0;
}
1 2 3 4 5
_ (입력 대기)
728x90
728x90
'Programming > C' 카테고리의 다른 글
[C] 일차원 배열의 시프트(Shift) (0) | 2022.09.29 |
---|---|
[C] 포인터(Pointer) 연산 정리 (0) | 2022.06.24 |