[C언어] 배열
1. 배열의 선언, 요소 사용
- 배열은 같은 자료형의 변수를 여러 개 사용할 때 이를 편리하게 저장하기 위해서 사용됩니다.
- 배열은 각 저장 공간을 이름과 인덱스(index)로 구분합니다.
배열 선언
ex. 배열 선언 방법
int arr[5]; //배열 요소의 자료형, 배열명[요소 개수];
- 배열 선언은 위와 같이 요소의 자료형, 이름, 필요한 요소 수를 차례로 표시합니다.
ex.
- 위와 같이 각 배열 요소의 자료형에 따라 다양하게 선언해줄 수 있습니다.
- 배열에 값을 저장할 때에는 변수와 마찬가지로 위와 같은 방법으로 저장 가능합니다.
변수와 배열의 차이
- int 형 변수 5개와 int형의 크기 5인 배열은 메모리 할당 방식에 차이가 있습니다.
▶ 변수로 선언하면 각 변수는 독립적인 저장 공간을 갖고 각각의 이름으로 사용됩니다.
ex. int 형 a,b,c,d,e 5개의 변수는 각각의 메모리 공간을 가짐 (총 20Byte)
▶ 배열은 저장 공간을 연속으로 할당하고, 배열명이 전체 공간의 이름이 됩니다.
ex. int 형 arr[5]라는 배열은 연속된 메모리 공간을 할당 받음 (총 20Byte)
※ 배열을 선언할 때와 배열 소용을 사용할 때 대괄호 안의 숫자는 의미가 다르다.
배열 선언 : int arr[5] // 최대 5개까지 저장한다는 의미
요소 사용 : arr[0], arr[1], arr[2], arr[3], arr[4] // 인덱스 0부터 시작한다. arr 배열은 최대 5개를 가지고 있으므로 인덱스 4까지 사용
- 배열의 인덱스는 0부터 시작하므로 최대 '배열 요소 수 -1'까지만 사용한다.
배열의 초기화
- 배열이 선언과 동시에 원하는 값을 갖도록 하려면 초기화를 해야 합니다.
=> 배열은 중괄호로 묶어서 초기화합니다.
※ 반드시 선언과 동시에 초기화해야 하며, 선언하고 난 후에 값을 저장하라면 배열 요소에 하나씩 값을 대입해야 한다.
ex.
- ary2 처럼 초기값으로 저장되는 요소가 배열 요소 수보다 적은 경우 왼쪽에서 차례로 최기화되고 남는 배열 요소는 모두 0으로 채워집니다. ex. ary2[0] - 1저장, ary2[1] - 2저장, ary2[2] - 3저장, ary2[3] - 0저장, ary2[4] - 0저장
=> 이런 자동 초기화 기능은 배열 요소가 아무리 많아도 모든 요소를 쉽게 0으로 초기화할 수 있습니다.
※중괄호를 사용한 배열의 초기화는 선언할 떄 최초 한 번만 가능합니다.
ex.
int arr1[5] = {....//값 저장}
arr1 = {...} // ※주의 : 이런식으로 대입할 수 없다.
반복문을 이용한 배열 저장과 출력
ex.
sizeif 연산자를 활용한 배열 처리
- 배열은 보통 많은 양의 데이터를 처리하므로 반복문 사용이 필수적이다. 이때 반복 횟수를 알려주기 위한 편리한 방법으로 sizeof 를 활용할 수 있다.
=> 배열 요소 수 (반복문에서 반복할 횟수) = sizeof(배열명)/sizeof(배열명[0])
ex.