C언어/참고서: C언어 콘서트

C언어 29차시 배열 array, 배열 요소, 인덱스, n차원 배열, 문자열

Olivia-BlackCherry 2023. 3. 28. 15:43

1. 배열이란? array

많은 변수를 빈틈없이 일직선 상에 나열한 구조이다.

다시 말해 여러 값을 한꺼번에 저장할 수 있는 데이터저장 장소이다. 

배열을 이용하면 보다 손쉽게 대량의 데이터를 저장할 수 있는 공간을 만들고, 데이터들을 손쉽게 처리할 수 있다. 

출처: C언어 콘서트

 

 

2. 선언

자료형 배열명   배열크기 ;
int       scores        [10]  ;

1) 자료형 지정

- 원칙: 한 배열 안의 각각의 데이터는 같은 종류(자료형)여야 한다.

- 배열은 데이터 타입이 동일한 변수를 늘어 놓은 것이므로, 배열 자체에도 데이터 타입이 있다.

 

2) 배열명

배열의 이름을 적는다. 배열명이라고도 한다. 다른 변수 및 배열과 구분되도록 고유의 이름을 붙인다. 

배열의 이름을 만들 때도 규칙이 있다. 배열명은 고유해야 하며, 숫자로 시작할 수 없다. 

배열의 이름을 지을 때는, 배열 안의 내용을 대표할 수 있는 것이 좋다.

 

3) 배열크기

가. 배열 요소 array element

- 배열에서 데이터 각각을 배열요소라고 부른다. 

- 배열에 존재하는 데이터의 수가 배열요소 수이다.

나. 인덱스 index

- 배열 안의 데이터들은 번호에 의하여 식별되며, 이 번호가 인덱스이다. 

- 배열명[인덱스]로 해당 배열요소에 접근한다.

다. 정수 상수 사용

-배열의 크기를 나타낼 때는 항상 정수 상수를 사용한다.

라.  #define 변수  크기

보통 배열을 선언할 때는 배열의 크기를 #define 지시자로 만들어진 기호 상수를 사용한다.

C언어 콘서트

배열명  [인덱스] 
scores  [0]

 

 

3. n차원 배열

지금까지 보았던, 일직선에서 나열한 사물함의 모습을 한 배열을 1차원 배열이라고 한다. 

데이터를 가로세로 빈틈없이 꽉 찬 직사각형 모습으로 나열한 배열은 2차원 배열이다.

높이를 추가하여 직육면체 모습을 한 배열은 3차원 배열이다.

그 외에도 n차원 배열이 이다.

 

배열의 각 요소는 인덱스 번호로 나타낸다.

배열명[행 요소 번호][열 요소 번호]
ex) array[3][2]

 

 

4. 문자열

문자열은 각 요소에 문자가 저장된 문자 배열이다. 

 

 

5. 연습문제 

5-1 배열 요소 출력하기

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#define SIZE 6

int main(void)
{
	int i;
	int scores[SIZE];
	scores[0] = 20;
	scores[1] = 30;
	scores[2] = 50;
	scores[3] = 70;
	scores[4] = 90;
	scores[5] = 20;

	for (i = 0; i < SIZE; i++)
		printf("scores[%d]=%d\n", i, scores[i]);
	return 0;
}

 

 

5-2 a~z까지의 문자 저장하고 있는 배열 생성하고, 데이터 꺼내기

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#define SIZE 26

int main(void)
{
	int i;
	char codes[SIZE];

	for (i = 0; i < SIZE; i++)
		codes[i] = 'a' + i;

	for(i = 0; i < SIZE; i++)
		printf("codes[%d]=%c\n", i, codes[i]);

	return 0;
}

>> a 다음의 수는 b이기 때문에 'a' +1='b'이다.

 

 

5-3 성적 입력받아서 합계와 평균 구하기

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#define SIZE 5

int main(void)
{
	int i, score, sum;
	int scores[SIZE];
	double average;
	sum =average= 0;

	for (i = 0; i < SIZE; i++) {
		printf("성적을 입력하세요\n");
		scanf("%d", &score);
		scores[i] = score;
	}
		
	for (i = 0; i < SIZE; i++) {
		sum = sum + scores[i];
		average = sum / SIZE;
	}
	printf("%d, %lf\n", sum, average);

	return 0;
}