10.1 배열이란?
변수와 배열
변수: 오직 하나의 값만 저장
배열: 한 번에 여러 개의 변수 생성
배열
동일 유형의 자료가 여러 개 저장되어 있는 저장 장소
각 자료들은 정수로 되어 있는 번호를 통해 접근 가능
배열의 필요성
학생 10명의 성적을 저장하기 위해 10개의 변수 선언
int s0, s1, s2, s3, s4, s5, s6, s7, s8, s9;
학생 10명의 성적을 저장할 수 있는 배열 선언
int s[10];
배열의 특징
메모리의 연속적인 공간에 저장
서로 관련된 데이터를 차례로 접근하여 처리
배열 선언
int scores [10];
// 반환형 배열명 요소개수
일반 변수와 함께 선언 가능
배열 크기를 반드시 지정
배열 크기는 상수를 사용
배열 크기에 변수 불가
배열 요소 접근
인덱스를 이용하여 접근
배열 요소는 변수와 동일
인덱스는 정수 상수, 변수, 수식 가능
배열과 반복문
반목문을 사용하여 배열 요소를 간편하게 처리
#define SIZE 5
...
for (int i = 0; i < SIZE; i++)
scores[i] = 0;
인덱스의 범위
인덱스가 배열의 크기를 벗어나면 프로그램에 치명적인 오류 발생
프로그래머가 인덱스가 범위를 벗어나지 않았는지를 확인
10.2 배열 초기화
초기값들을 콤마로 분리하여 중괄호로 감싼 후에, 배열을 선언할 때 대입
초기값을 일부만 주면 나머지 원소들은 0으로 초기화됨
배열의 크기가 주어지지 않은 경우에는 초기값의 개수가 배열의 크기가 됨
배열을 지역변수로 선언하면 초기화 되지 않은 배열은 쓰레기값을 가지게 됨
10.3 배열과 함수
배열을 함수의 인수로 사용하여 원본을 전달
원본 배열의 변경
함수 안에서 매개변수를 통해 배열 요소를 변경하면 원본 배열을 변경
원본 배열의 변경 금지
매개변수 앞에 const 지정자 사용
10.4 정렬
대상을 크기 순으로 오름차순 혹은 내림차순으로 나열하는 것
신속한 자료 탐색에 있어서 필수적인 알고리즘
정렬의 예
책들을 제목, 저자, 출판년 순으로 정렬
사람을 나이, 이름, 몸무게 순으로 정렬
학생을 학번, 성적, 학과명 순으로 정렬
선택 정렬
전체 자료 중 가장 작은 값을 찾아 맨 앞으로 보내는 과정을 반복하면서 정렬 을 진행하는 방식
10.5 탐색
순차 탐색
순차 탐색은 배열의 원소를 순서대로 하나씩 꺼내서 탐색키와 비교하여 원하 는 값을 찾아가는 방법
탐색 방법 중, 가장 간단하고 직접적임
선형 탐색
배열의 크기가 크다면 문제가 됨
상당히 시간이 많이 걸림
이전 탐색
정렬된 배열의 중앙에 위치한 원소와 비교 되풀이
탐색하려는 배열이 정렬 되어 있어야 함
아주 속도가 빠름
10.6 2차원 배열
int s[3][5];
// 행 열
2차원 배열 초기화
int s[3][5] = {
{ 0, 1, 2, 3, 4 },
{ 10, 11, 12, 13, 14 },
{ 20, 21, 22, 23, 24 }
};
2차원 배열을 함수로 전달
함수에서 2차원 배열을 전달받을 때 열의 개수 명시 (행의 개수 생략 가능)
int main(void)
{
int sales[YEARS][PRODUCTS] = { {1, 2, 3}, {4, 5, 6}, {7, 8, 9} };
int total_sale;
total_sale = sum(sales);
}
int sum(int scores[YEARS][PRODUCTS])
{
int y, p;
int total = 0;
for(y = 0; y < YEARS; y++)
for(p = 0; p < PRODUCTS; p++)
total += scores[y][p];
return total;
}
'잠든 카테고리 > 쉽게 풀어쓴 C언어 Express' 카테고리의 다른 글
12-12.1(문자와 문자열)~12.7(문자열 여러 개를 저장하는 방법) (0) | 2022.06.14 |
---|---|
11-11.1(포인터란?)~11.7(포인터 사용의 장점) (0) | 2022.06.14 |
09-9.1(변수의 속성)~9.8(순환 호출)+Advanced Topic (0) | 2022.06.10 |
08-8.1(함수란?)~8.7(함수를 사용하는 이유)+Advanced Topic (0) | 2022.06.09 |
07-7.1(반복의 개념)~7.7(break와 continue) (0) | 2022.04.28 |