배열
- 같은 타입의 변수들로 이루어진 유한 집합으로 정의할 수 있습니다.
- 배열을 이용하면 여러 개의 값을 하나의 이름으로 정의할 수 있다.
- 배열을 구성하는 각각의 값을 배열 요소(element)라고 하며, 배열에서의 위치를 가리키는 숫자를 인덱스(index)라고 한다.
- C++에서 인덱스는 언제나 0부터 시작하며, 0을 포함한 양의 정수만을 가질 수 있습니다.
1) 인덱스의 확용
int s[10]; //배열 선언 -개수
cout << s[5]; //출력문 -번째를 의미 index+1 => 0번쨰부터 시작
cin >> s[3]; //입력문
2) 배열의 특징
1. 배열의 길이를 선언할 때에는 반드시 상수를 사용해야 합니다.
2. 배열 요소의 인덱스는 언제나 0부터 시작합니다.
3. C++ 컴파일러는 배열의 길이를 전혀 신경 쓰지 않습니다.
4. 초기화 되지 않은 부분은 0으로 값이 자동으로 들어간다.
3) 배열의 선언과 초기화
타입 배열이름[배열길이] = {{배열 요소 1, 배열 요소 2,...};};
4) 배열의 자동 초기화
배열의 크기가 주어지지 않으면 자동적으로 초기값의 개수만큼 이 배열의 크기로 잡힌다.
5) 2차원 배열
ex) int s[3][5]; => 3행 5열
- 각각의 행이 처음 시작하는 주소값을 가짐
예제) 2차원 배열의 각 행의 합을 구하기
#include <iostream>
using namespace std;
int main() {
int s[3][5];
int i, j;
int value = 0;
for (i = 0; i < 3; i++) {
for (j = 0; j < 5; j++) {
s[i][j] = value++;
}
}
for (i = 0; i < 3; i++) {
int sum = 0;
for (j = 0; j < 5; j++) {
cout << s[i][j];
sum += s[i][j];
}
cout <<" => 행의 합은 : "<< sum << endl;
}
return 0;
}
#include <iostream>
using namespace std;
const int YEARS = 3;
const int PRODUCTS = 5;
int sum(int grade[][PRODUCTS]);
int main() {
int sales[YEARS][PRODUCTS] = { {1,2,3},{4,5,6},{7,8,9} };
int total_sale;
total_sale = sum(sales);
cout << "총매출은" << total_sale << "입니다." << endl;
return 0;
}
int sum(int grade[][PRODUCTS])
{
int y, p;
int total = 0;
for (y = 0; y < YEARS; y++)
for (p = 0; p < PRODUCTS; p++)
total += grade[y][p];
return total;
}
배열 예제 1 :
#include <iostream>
using namespace std;
int main() {
int a = 5;
int array[5]; //배열선언
array[0] = 10; //초기화
array[1] = 20;
array[2] = 30;
array[3] = 40;
array[4] = 50;
cout << array[0] << ',' << array[1] << ',' << array[2] << ',' << array[3] << ',' << array[4] << endl;
cout << array << endl; //array[0]의 주소값과 같다.
cout << &array[0] << endl; // &는 주소값
cout << &array[1] << endl;
const int SIZE = 5; // 상수 선언 -수정 불가능 , 보통 대문자
int int_array[SIZE];
for (int i = 0; i < SIZE; i++) {
cout << "int_array[" << i << "] : ";
cin >> int_array[i];
cout << endl;
}
for (int i = 0; i < SIZE; i++) {
cout << int_array[i] <<' ';
}
return 0;
}
배열 예제 2 : 학생들의 성적을 입력하여 평균을 구하시오.
#include <iostream>
using namespace std;
int main() {
const int STUDENTS = 5;
int grade[STUDENTS];
int sum = 0;
int i, average;
for (i = 0; i < STUDENTS; i++) {
cout << "학생들의 성적을 입력하시오: ";
cin >> grade[i];
}
for (i = 0; i < STUDENTS; i++)
sum += grade[i];
average = sum / STUDENTS;
cout << "성적 평균= " << average << endl;
return 0;
}
배열 예제 3 : 배열과 함수 : 평균 구하기
#include <iostream>
using namespace std;
int get_average(int score[], int n);
int main() {
const int STUDENTS = 5;
int grade[STUDENTS] = { 1,2,3,4,5 };
int avg;
avg = get_average(grade, STUDENTS); //grade 배열의 주소값이 넘어감
cout << "평균은" << avg << "입니다\n";
return 0;
}
//넘어온 배열의 반환형을 생각하여 int score[]로 주소값을 받아주어야한다.
int get_average(int score[], int n)
{
int i;
int sum = 0;
for (i = 0; i < n; i++)
sum += score[i];
return sum / n;
}
배열 예제 4: 원본 배열의 변경을 금지하는 방법
#include <iostream>
using namespace std;
void copy_array(char dest[], const char src[], int size);
const int SIZE = 20;
int main() {
char s[SIZE] = { 'H','E','L','L','O','\0' };
char d[SIZE];
copy_array(d, s, SIZE);
cout << d;
return 0;
}
//const 고정으로 s배열을 fix
//char dest[] 자리에는 const 오면 안됨! 복사된 값이 대입되어
//넣어질때 const면 고정되어 값이 들어가지지 않음!
void copy_array(char dest[], const char src[], int size) {
int i;
for (i = 0; i < size; i++) {
dest[i] = src[i];
}
}
'Programming > C++' 카테고리의 다른 글
C++ 실습 0413 (0) | 2021.04.13 |
---|---|
C++ 실습 배열 6문제 0412 (0) | 2021.04.12 |
C++ 난수 생성 라이브러리 (0) | 2021.04.09 |
C++ - 저장 유형 지정자 extern (0) | 2021.04.09 |
C++ - 저장 유형 연산자 static (0) | 2021.04.09 |
댓글