#3-1. 배열

Kal·2021년 7월 19일
0

C언어

목록 보기
4/17

1. 배열

1.1 배열 선언하고 사용하기

똑같은 자료형으로 많은 수의 변수를 선언하고 사용할 때에는 나열식 표현에 한계가 있다. 따라서 C 언어는 데이터를 그룹으로 묶어서 표현하는 ' 배열 ' (Array) 문법을 사용한다.

short student[20];

은 2바이트 정수형 데이터 20개를 저장할 수 있는 배열을 student라는 변수 이름으로 선언한다는 뜻이다. []에 들어가는 요소 개수는 반드시 숫자 상수로 명시해야 한다.

배열은 그룹으로 묶인 데이터를 하나의 변수로 취급한다.

1.2 배열의 특정 요소에 값 대입하기

만약 배열로 선언된 변수 중 특정 위치에 있는 변수에만 값을 대입하고 싶다면 어떻게 할까?

student[1] = 10;

과 같이, 변수 이름[색인(index)] = 값; 이라는 대입 명령문을 사용하면 된다.

# 배열의 특정 요소에 값 대입하기 예시 (c.1)

#include <stdio.h>

void main()
{
short student[20];
student[1] = 10;
printf("%d\n", student[1]);
}

+) 배열을 선언할 때 주의할 점은 무엇일까?

  • 배열 선언 시 [ ] 안에 들어가는 값은 무조건 상수로 써주어야 한다.
  • 만일 상수로 적지 않고 변수를 적어버리면 comfile 과정에서 오류가 발생한다.

1.3 배열 요소에 for문으로 값 대입하기

배열을 선언할 때는 [] 안에 꼭 상수를 적어줘야 한다. 그러나 배열의 특정 요소에 값을 대입할 때는 [] 안에 변수를 사용할 수 있다.

int index = 1;
student[index] = 10;

이렇게 변수를 사용할 수 있다는 것은 반복문과 같은 제어 문법을 함께 사용할 수 있다는 뜻이다.

short student[20], i;
for (i=0; i<5; i++) student[i] = 5;

이 것은 반복문 for을 사용한 문법으로 구성된 짧은 소스코드이다. short student의 요소를 i라는 변수로 놓고, 0,1,2,3,4 요소를 5로 채우고자 할 때 사용할 수 있는 코드라고 볼 수 있다.

이렇게 요소에 변수를 사용하고 반복움ㄴ으로 코드를 구성하면 프로그래밍이 더 편리해진다.

Q. int형으로 20개의 요소의 배열을 만들고 초깃값을 모두 0으로 저장해 보아라. 단 for문을 이용하여 코딩해야한다.

#include <stdio.h>

void main()
{
int test[20], i;
for(i=0; i<20; i++) test[i] = 0;

}

1.4 배열 초기화하기

배열로 만들어진 변수 또한 지역 변수이기 때문에, 직접 초기화하지 않는 이상 자동으로 초기화 되지 않는다. 따라서 일정한 값을 대입하여 초기화해서 사용해야한다.

대체로 프로그래머들은 초깃값으로 0을 사용한다.

반복문을 사용하여 배열의 모든 요소를 0으로 초기화하기

#include <stdio.h>

void main()
{
short student[20], i;
for(i=0;i<20;i++) student[i] = 0;

student[1] = 10;
printf("%d %d\n", student[1], student[2]);
}

출력값 : 10 0

- 쉼표를 이용한 초기화 문법

배열을 초기화 하는 데에 매번 반복문을 사용하는 것도 불편하다. 이런 불편함을 해결하기 위해 배열로 선언한 변수도 일반 변수처럼 초기화하는 방법이 있다.

일반 변수의 초기화와 차이가 있다면 배열은 {}로 묶어 초깃값들을 저장한다는 것이다.

short student[20] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,};

이렇게 {}로 묶어 초깃값들을 저장하면 되지만, 변수가 많을 경우 부담스러워진다.

short student[20] = {0,};

이렇게 쉼표 하나만으로 초깃값을 정리해주면 뒤에 있는 나머지 변수들도 0으로 초기화된다.

배열 초기화 문법으로 배열의 모든 요소를 0으로 초기화하기

#include <stdio.h>

void main
{
short student[20] = {0,};

student[1] = 10;
printf("%d %d\n", student[1], student[2]);
}

출력값 10 0

Q. 배열의 모든 요소를 3으로 초기화하고 싶다면?

short data[5] = {3,};

이것의 결과는 {3,0,0,0,0}; 과 같다. 쉼표로 뒷부분을 생략해버리면 이는 0으로 초기화하는 것과 같기 때문에, 배열의 요소가 많은 경우에 0이 아닌 값으로 초기화하고싶다면 반복문을 쓰는 것이 적절하다.

- 배열 크기 생략하기

short data[ ] = {1,2,1,2,1};

배열을 선언할 때 [ ]안의 요소 개수를 생략하고 위와 같이 사용할 수도 있다. 이 경우에 { } 안에 나열된 항목이 5개이므로 5개의 저장 공간이 만들어진다.

초기화 문법은 배열 변수를 선언할 때만 사용하자.
student[1] = {5}; (X)

1.5 배열의 요소 값 사용하기

배열에 저장된 요소 값을 읽어오거나 요소 값끼리 연산할 수도 있다.

short data[3];
data[0] = 2;
data[1] = data[0] + 5;
data[2] = data[0] + data[1];

배열의 각 요소에 저장된 값 구하기

#include <stdio.h>

void main()
{
	char data[5] = { 1,2,3,4,5 };
	int result = 0, i;

	for (i = 0;i < 5;i++) {
		result = result + data[i];
	}
	printf("data 배열의 각 요소의 합은 %d입니다\n", result);

}

- 배열은 사용자 정의 자료형이다

배열은 같은 크기의 메모리를 그룹으로 묶어 새로운 크기의 변수를 만들기 때문에 ' 사용자 정의 자료형 ' 이라고 부른다.

char three[3];

이처럼 char형은 1바이트 크기임에도 불구하고 char three[3]이라는 배열을 선언하면 3바이트 자료형이 새롭게 만들어지는 것이다.

따라서, C 문법이 기본으로 제공하는 자료형으로는 표현할 수 없었던 3바이트, 5바이트 크기의 변수도 배열을 사용하면 자유롭게 만들 수 있다.

profile
프로그래밍 독학

0개의 댓글