[C, C++] 배열

성현씨·2024년 2월 20일
0

C / C++

목록 보기
11/15
post-thumbnail
post-custom-banner

◾ 배열

  • 배열이란 같은 형태의 많은 데이터를 반복문으로 처리하기 위해서 메모리에 연속적으로 저장해 놓고 쪼개서 사용하는 방법을 말한다.

  • int 5개를 만들고 싶어 >> int ary[5] = { };
    배열의 이름을 ary로 하며 int 자료형 5묶음을 만들고 { } 사용해서 전체를 0으로 초기화 하겠다.

-> 배열은 항상 조심히 써야 한다. 나는 [5]으로 정해놨는데 [6]으로 잘못 적었을 시 다른 사람이 적어둔 배열을 불러올 수 있다.

📃 예를 들어보자

#include <stdio.h>

int main()
{
	int ary[5] =  {};

	ary[0] = 10;
	ary[1] = 20;
	ary[2] = ary[0] + ary[1];
	scanf_s("%d", &ary[3]);      // 키보드로 입력받은 값이므로 ary 앞에 &를 붙입니다.

	printf("%d \n", ary[2]);
	printf("%d \n", ary[3]);
	printf("%d \n", ary[4]);    // 마지막 배열은 정하지 않으면 쓰레기 값

	return 0;
}

  • 밑에 처럼 이상하게 나온 숫자를 쓰레기 값이라고한다.
  • 위에처럼 0이 나오는 이유는 = { } 를 사용해서 0으로 초기화했기 때문이다 아무것도 적지 않았을 경우 0으로 출력된다 ary[4]를 출력했는데 값이 없기 때문에 0으로 나오는 것이다.


→ 변수는 각각의 공간에 이름을 지정하지만, 배열은 메모리에 연속된 공간이 할당되며 하나의 이름으로 사용된다.

📙 배열과 반복문을 이용한 성적표 만들기

#include <stdio.h>

int main()
{
	int score[5];     // 다섯 과목의 성적을 입력할 int형 배열 선언
	int total = 0;    // 총점을 누적할 변수
	double avg;       // 평균을 저장할 변수

	// 각 배열에 성적 입력
	for (int i = 0; i < 5; ++i)
	{
		scanf_s("%d", &score[i]);
	}

	// 성적을 누적해 총점 계산
	for (int i = 0; i < 5; ++i)
	{
		total += score[i];
	}
	avg = total / 5.0;       // 평균 계산

	// 성적 출력
	for (int i = 0; i < 5; ++i)
	{
		printf("%5d", score[i]);
	}
	printf("\n");

	printf("평균 : %.1lf\n", avg);            // .1lf .2lf .3lf : 소수점 자리

	return 0;
}

📃 sizeof 연산자를 활용한 배열 처리 방법

  • sizeof(배열명) / sizeof(배열 요소)
#include <stdio.h>

int main()
{
	int score[5];     // 과목 수가 변경될 경우 이것만 바꾸면 된다.
	int total = 0;
	double avg;    
	int count;        // 배열 요소의 개수를 저장할 변수

	// 배열의 전체 크기를 구할 때 sizeof를 사용한다.
	count = sizeof(score) / sizeof(score[0]);    // 배열 요소의 개수 계산

	// 각 배열에 성적 입력
	for (int i = 0; i < count; ++i)
	{
		scanf_s("%d", &score[i]);
	}

	// 성적을 누적해 총점 계산
	for (int i = 0; i < count; ++i)
	{
		total += score[i];
	}
	avg = total / count;       // 평균 계산

	// 성적 출력
	for (int i = 0; i < count; ++i)
	{
		printf("%5d", score[i]);
	}
	printf("\n");

	printf("평균 : %.1lf\n", avg);            // .1lf .2lf .3lf : 소수점 자리

	return 0;
}

-> 이렇게 사용하면 나중에 요소의 개수를 바꾸더라도 나머지 코드를 수정할 필요가 없다.

profile
순수청년
post-custom-banner

0개의 댓글