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;