배열이란 자료형이 같은 많은 자료를
하나의 이름으로 저장하는 연속된 기억공간이다.
변수 선언하는 방식을
int age;
이렇게 작성 했었다면,
배열은
int age[ 5 ];
이런 형식으로 작성하고,
[]안에는 상수만 가능!
예를 들어 원소가 총 300개가 있다고 하면,
각각의 원소들은 height[0]~height[299]로 구분된다.
음...
배열 첫 원소로부터 몇 개 뒤의 원소인가를 나타내기 때문이다.
쉽게 예를 들어 사람 수를 셀 때,
한 명, 두 명, ... 이렇게 세는 방법도 있지만
첫번째를 기준으로 뒤로 한 명, 두 명 ... 세는 느낌이다.
그럼 이제 직접 배열을 해보자.
int cost[5] = {12000, 9000, 8700, 15000, 3500};
이제 'cost' 배열의 각 원소에는
{12000, 9000, 8700, 15000, 3500};
이 순서대로 저장됐다.
배열 선언시에만 사용 가능한 초기화 방법이고,
이 방법을 제외하고는 배열 단위로 한꺼번에 값을 저장하거나 사용하는 것은 불가능!
cost[0] = 13000; cost[1]++; printf("%d원", cost[3]); scanf("%d", &cost[4]); // &cost[4]는 cost[4] 배열 원소의 주소
장바구니에 든 5개 물건의 가격 출력
장바구니에 물건이 5개가 있다고 가정해보고,
각각의 가격을 출력해보자.
#include <stdio.h> int main() { int cost[5] = {12000, 9000, 8700, 15000, 3500}; printf("5가지 가격 \n"); printf("%5d \n", cost[0]); printf("%5d \n", cost[1]); printf("%5d \n", cost[2]); printf("%5d \n", cost[3]); printf("%5d \n", cost[4]); }
잘 나오지만.. 원소 개수가 많으면 저걸 다 언제 입력하냐
반복문을 써보자.
#include <stdio.h> int main() { int i; int cost[5] = {12000, 9000, 8700, 15000, 3500}; printf("5가지 가격 \n"); for (i=0; i<5; i++) { printf("%d원 \n", cost[ i ]); } return 0; }
제어변수 i를 활용하면 i가 0, 1, 2, 3, 4로 변하면서 차례로 원소값을 출력하고 5가 되면
i<5조건이 거짓이 되므로 for문을 끝낼 수 있다.
이제 원소수가 개수에 상관없이 쉽게 출력할 수 있게 됐다.
#include <stdio.h> int main() { int i, sum, average, count; int cost[5] = {12000, 9000, 8700, 15000, 3500}; sum = 0; printf("5가지 가격 \n"); for (i=0; i<5; i++) { printf("%8d원 \n", cost[i]); sum = sum + cost[i]; } printf("총%6d원 \n", sum); average = sum / 5; count = 0; for (i=0; i<5; i++) { if (cost[i] >= average) count++; } printf("평균 %d원 이상은 %d개", average, count); return 0; }
짠
가격을 5개 출력하는 것
가격 5개를 더해가는 것
평균과 가격을 비교해서 카운트 하는 것
원소수가 500개, 5000개가 되더라도 원소수가 증가하면
원소 cost[i]의 원소수 i부분만 수정해주면 되므로,
코드 길이는 달라지지 않는다
이게 바로 배열의 장점!