[C] 똑같은 건 한 곳에 저장하고 싶은데..

장세민·2022년 7월 26일
0

📝 TIL

목록 보기
12/40
post-thumbnail

배열

배열이란 자료형이 같은 많은 자료를
하나의 이름으로 저장하는 연속된 기억공간이다.

변수 선언하는 방식을

int age;

이렇게 작성 했었다면,

배열은

int age[ 5 ];

이런 형식으로 작성하고,
[]안에는 상수만 가능!

예를 들어 원소가 총 300개가 있다고 하면,
각각의 원소들은 height[0]~height[299]로 구분된다.

음...

근데 왜 0부터 시작하지?

배열 첫 원소로부터 몇 개 뒤의 원소인가를 나타내기 때문이다.

쉽게 예를 들어 사람 수를 셀 때,
한 명, 두 명, ... 이렇게 세는 방법도 있지만
첫번째를 기준으로 뒤로 한 명, 두 명 ... 세는 느낌이다.

그럼 이제 직접 배열을 해보자.

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;
}

GO!

배열의 편리성

  • 가격을 5개 출력하는 것

  • 가격 5개를 더해가는 것

  • 평균과 가격을 비교해서 카운트 하는 것

원소수가 500개, 5000개가 되더라도 원소수가 증가하면
원소 cost[i]의 원소수 i부분만 수정해주면 되므로,
코드 길이는 달라지지 않는다

이게 바로 배열의 장점!

profile
분석하는 남자 💻

0개의 댓글