10장 Summary
배열 원소에 붙여져 있는 번호를 인덱스(index) 또는 첨자(subscript)라고 한다.
배열 a의 i번째 원소는 a[i]와 같이 참조한다.
int a[10];과 같이 선언된 배열에서 사용할 수 있는 인덱스의 값은 0에서 9까지이다.
정수형 배열 a[6]을 선언하고 1, 2, 3, 4, 5, 6으로 초기화하는 문장은 int a[6] = {1, 2, 3, 4, 5, 6};과 같다.
배열의 크기를 주지 않고 초기값(1, 2, 3, 4, 5, 6)의 개수로 배열의 크기를 결정하려면 int a[] = {1, 2, 3, 4, 5, 6}와 같이 선언한다.
// #define SIZE 3 이고 int a[SIZE] = {1, 2, 3} 이면 컴파일 오류다!
배열 a의 크기를 자동적으로 계산하려면 수식 sizeof(배열)/sizeof(배열원소);을 사용한다.
초기값의 개수가 배열 원소의 개수보다 적은 경우에는 나머지 원소들은 0값으로 초기화 된다.
int a[3][5][2]와 같이 정의된 배열에서 원소의 총개수는30(3*5*2)이다.
배열을 함수의 인수로 보내면 원본이 전달된다.
("값의 호출에 의한" 매개변수 복사가 아님, 배열 원소를 인수로 하여 함수호출하면 복사본이 전달된다.)
배열을 함수의 인수로 전달할 때 원본 배열의 변경을 금지하고 싶으면 const 지정자을 매개 변수 앞에 붙인다.
하나의 배열을 다른 배열로 통째로 대입하거나 비교할 수 있는가? 즉 배열a[]와 배열b[]가 있을 때 다음과 같은 문장이 가능한가?
틀린 예시 (대입, 비교) |
바른예시 (대입, 비교) |
int a[10], b[10]; a=b; if(a==b) |
int i, a[10], b[10]; for(i=0; i<10; i++) |
int a[SIZE] = {1, 2, 3, 4, 5}; if (a==b) |
int a[SIZE] = {1, 2, 3, 4, 5}; for(i=0; i<SIZE; i++) |
배열의 크기가 음수, 실수, 변수이거나 비어있으면 컴파일 오류다. (단, #define을 통한 기호 상수는 가능하다)
배열을 초기화할 때 일부만 주면 나머지 원소들은 0으로 초기화된다.
'프로그래밍 > 쉽게 풀어쓴 C언어 Express' 카테고리의 다른 글
쉽게 풀어쓴 C언어 Express 10장 Programming (0) | 2018.11.06 |
---|---|
쉽게 풀어쓴 C언어 Express 10장 Exercise (2) | 2018.11.02 |
쉽게 풀어쓴 C언어 Express 9장 Programming (0) | 2018.10.19 |
쉽게 풀어쓴 C언어 Express 9장 Exercise (0) | 2018.10.19 |
쉽게 풀어쓴 C언어 Express 9장 Summary (0) | 2018.10.19 |