배열(array)1

킴스코딩클럽·2022년 9월 21일
1

CS기초 시리즈

목록 보기
13/71

struct : 서로 다른 타입의 변수를 묶어줌

10명의 플레이서 스코어가 있다고 생각해보자

int scores1
int scores2
.....

동일한 타입의 값을 여러개(n) 저장해야한다
그럴 때 사용하는 방법이 배열 필요한 개수를 지정하는 것

타입 변수명[크기-];

int scores[10];

[] :subscript operator (첨자 연산자)
피연산자는 scores와 10 두개로 이항 연산자이다
scores라는 변수가 10개 있다

각각의 변수에 접근하기 위해서는 index가 필요함

[] 선언문:  배열의 크기
		리터럴,상수,그리고 열거형만 가능함 전부 상수만 가능
   일반문: 배열의 인덱스

//TOP TEN SCORE
	
	int scores[10];
	// 인덱스는 0~9 
	
	for (int i = 0; i < 10; i++) //열번 입력 반복
	{
		std::cout << "스코어를 입력[" << i << ']:';
		std::cin >> scores[i];
	}
	
	for ( int i = 0;  i < 10; i++) 
	//10번 반복 : i는 0부터 ~ 9까지 10은 성립되지 않아 반복끝남
	//for문 0부터 배열과 맞게 
	{
		std::cout << scores[i] << std::endl; // 배열의 순서
	}

배열 사용 시 주의사항 : 울타리 말뚝 오류(off by one error)
10미터 울타리에 2미터마다 말뚝을 설치하려면 몇개가 필요할까?
5개가 아니라 6개가 필요


배열 선언
	int scores[5]; 
	const int MAXCOUNT{ 3 }; //상수
	int myNubmers[MAXCOUNT];

	enum MyEnum
	{
		ten = 10
	};
	int values[ten];
	
	//모두 상수만 가능함
	
	int max{ 5 };
	int numbers[max]; //상수만 가능함 변수 불가능

상수와 변수의 차이
상수는 compile time 변수는 run time(메모리로 올리는 시점)
int max{5};의 경우
max라는 value에 5가 들어가는 시점은 run time이다 따라서 compile time에는 뭐가 들어가 있는지 알 수 없다


배열 구문 : 배열의 인덱스를 알려줌
리터럴,상수 및 열거형, 변수, expression모두 가능함

int scores[5];
scores[0] = 0;
enum Orter
{
	First =1
};
scores[First] = 0;

const int second =2;
scores[second] =1;

int index{1};
scores[index] = 1;

scores[index + index *index/index] =1;

거의 모두 다 가능함 
배열의 크기를 지정할 때만 상수만 가능함

초기화

int scores[5]; // 선언

int scores[5]{ 1,2,3,4,5 }; //유니폼 초기화 사용

int scores[5]{1,2,3,}; // 나머지는 기본값인 0으로 초기화

int scores[]{ 1,2,3,4,5 }; 
	// 원소가 5개라는 것을 컴파일러가 이해
	// 원소의 개수만큼 크기 생략 가능함

정리

열명의 성적을 입력받아 총합을 구해보자

const int MAX_COUNT{ 10 }; //상수를 사용하기 위해
	int scores[MAX_COUNT]{}; 

	for (int i = 0; i < MAX_COUNT; i++)
	{
		std::cout << "Input Score" << i << ":";
		std::cin >> scores[i];
	}
	
	int totalScores{}; // 합계저장위한 임시 변수
	for (int i = 0; i < MAX_COUNT; i++)
	{
		//totalscores=totalscores + scores[i];
		totalScores += scores[i];
	}

	std::cout << "totalscore:" << totalScores << std::endl;
profile
공부 기록용

0개의 댓글