배열이란 특정 개수의 같은 형(Type)을 띄는 자료값(Value)을 갖는 자료구조
배열을 선언하기 위해선 우선 배열의 원소들의 형(type)과 배열의 크기(number)를 결정해야 한다.
int a[10];
/* 좋은 습관 : 배열의 크기를 수정할 예정이라면, 매크로 정의를 사용하면 좋다*/
#define N (10)
...
int a[n];
배열의 한 특정 원소에 접근하고 싶다면 해당 배열의 이름 다음에 대괄호로 감싼 정수값을 적어주면 됨 ( 배열의 첨자[subscript] 혹은 색인[index] )
- 배열이 T형 의 원소를 갖는다면, 배열의 각 원소들은 마치 실제 T형 변수처럼 다뤄진다.
int a[10] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
// a = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
int a[10] = {1, 2, 3, 4, 5, 6};
// a = {1, 2, 3, 4, 5, 6, 0, 0, 0, 0};
int a[10] = {0};
/* 의도적임을 드러내기 위해 아래와 같이 사용 */
int a[10] = {0, };
// a = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
n 이라면, 각 지정자는 반드시 0 과 n-1 사이의 값을 가져야 한다.- 배열에서 특정값으로 초기화한 원소 외에 나머지는 0으로 초기화하는 경우
// 아래 코드들의 결과값은 같다
int a[15] = {0, 0, 29, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, 0, 48};
/* 2번 예시 */
int a[15] = { [2] = 29, [9] = 7, [14] = 48 };
/* 3번 예시 */
int b[] = {[14] = 48, [9] = 7, [2] = 29};
- 원소별 초기자와 지정 초기자를 섞어서 사용하는 방법
배열에서 첫 3개의 원소는 5 , 1 , 9 의 값을 가짐.
4번 원소는 3을 가짐 4번 원소 이후
int c[10] = {5, 1, 9, [4] = 3, 7, 2, [8] = 6};
// c = {5, 1, 9, 0, 3, 7, 2, 0, 6, 0};
배열 간의 할당은 불가능
- 하나의 배열을 다른 배열로 복사하기 위한 방법
1. 반복문을 통해 원소 하나 하나를 일일이 복사하는 것
2. <string.h> 헤더의 memcpy (메모리 복사) 함수를 사용
/* 배열 간 할당은 불가능 */
a = b;
/* 1 */
for (i = 0; i < N; ++i;) {
a[i] = b[i];
/* 2 */
memcpy(a, b, sizeof(a));