배열은 일반적인 변수와 다르게 여러 개의 값을 저장할 수 있다. 여러 개의 변수가 모여서 배열을 이룬다.
배열은 다음과 같이 선언할 수 있다.
int arr[4];
위 코드에는 배열을 이루는 요소의 자료형, 배열의 이름, 배열의 길이 이다. 따라서 위 코드의 의미는 'int형 변수 4개로 이뤄진 arr이라는 이름을 갖는 배열을 선언한다.' 이다. 이 형식을 갖추어 다양한 자료형과 다양한 길이의 배열을 선언할 수 있다.
배열은 다음과 같이 배열 이름 뒤의 대괄호([]) 안의 인덱스 값으로 접근할 수 있다. 인덱스 값은 0부터 시작한다. 배열의 길이가 3일 경우 인덱스 값은 2까지 있다.
#include <stdio.h>
int main(void)
{
int arr[3];
int sum = 0;
arr[0] = 10, arr[1] = 30, arr[2] = 20;
for(int i = 0; i < 3; i++)
sum += arr[i];
printf("배열 요소에 저장된 값들의 합 : %d\n", sum);
return 0;
}
//output : 배열 요소에 저장된 값들의 합 : 60
위 코드는 크기가 3인 배열에 값들을 저장하여 배열의 값들의 합을 구하는 코드이다. 배열의 모든 요소는 반복문을 활용하여 순차적으로 접근 가능하다는 것을 알 수 있다.
배열도 기본 자료형 변수들과 마찬가지로 선언과 동시에 초기화하는 것이 가능하다.
다음 코드와 같이 중괄호 내에 초기화 할 값들을 나열하면 해당 값들이 순서대로 저장된다.
int arr[5] = {1,2,3,4,5};
위와 같이 초기화 리스트가 사용된 경우 배열의 길이정보를 생략할 수 있다.
int arr[] = {1,2,3,4,5};
위 코드의 경우 배열의 길이정보 5가 자동으로 채워진다.
int arr[5] = {1,2};
위 코드의 경우 배열의 길이는 5이지만 초기화할 값은 2개밖에 존재하지 않는다. 위와 같은 경우 순차적으로 값을 채우고 채울 값이 존재하지 않는 요소들은 0으로 채워진다. 위의 경우 배열의 값은 1,2,0,0,0 과 같다.
#include <stdio.h>
int main(void)
{
int arr1[5] = {1,2,3,4,5};
int arr2[ ] = {1,2,3,4,5,6,7};
int arr3[5] = {1,2};
printf("arr1의 크기 : %d\n", sizeof(arr1));
printf("arr2의 크기 : %d\n", sizeof(arr2));
printf("arr3의 크기 : %d\n", sizeof(arr3));
int ar1Len = sizeof(arr1) / sizeof(int);
int ar2Len = sizeof(arr2) / sizeof(int);
int ar3Len = sizeof(arr3) / sizeof(int);
for(int i = 0; i<ar1Len; i++)
printf("%d ", arr1[i]);
printf("\n");
for(int i = 0; i<ar2Len; i++)
printf("%d ", arr2[i]);
printf("\n");
for(int i = 0; i<ar3Len; i++)
printf("%d ", arr3[i]);
printf("\n");
return 0;
}
/* output :
arr1의 크기 : 20
arr2의 크기 : 28
arr3의 크기 : 20
1 2 3 4 5
1 2 3 4 5 6 7
1 2 0 0 0
*/
sizeof로 배열의 크기를 반환하면 바이트 단위로 반환된다. 따라서 배열의 길이를 계산하려면 int 바이트수만큼 나눠줘야 한다.
'Language > C, C++' 카테고리의 다른 글
[C] 포인터 변수 (0) | 2020.12.16 |
---|---|
[C] 1차원 배열(2) (0) | 2020.12.14 |
[C] 재귀함수 (0) | 2020.12.10 |
[C] register 변수 (0) | 2020.12.10 |
[C] static 변수 (0) | 2020.12.10 |