본문 바로가기
Programming/C++

C++ 배열

by ahhang0k 2021. 4. 12.

배열

  • 같은 타입의 변수들로 이루어진 유한 집합으로 정의할 수 있습니다.
  • 배열을 이용하면 여러 개의 값을 하나의 이름으로 정의할 수 있다.
  • 배열을 구성하는 각각의 값을 배열 요소(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;
}

배열 예제1 출력

 

 

 

 

배열 예제 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

댓글