코딩/c언어

배열의 선언과 사용

코딩 코딩 코오딩 2021. 5. 5. 16:42

배열을 사용하면 많은 변수를 하나의 선언문으로 간단하게 대체할 수 있습니다.

배열을 만들고 사용하는 방법을 알아보자

 

지금까지 메모리에 저장 공간을 확보할 때 변수를 선언했습니다.

예를 들어 5과목의 점수를 처리하고 싶다고 가정

점수를 int형 변수로 하나씩 개별적으로 선언함

 

int kor, math, engm social, science;

 

이렇게 하나씩 따로따로 선언하면 점수도 일일이 하나씩 넣어줘야함

즉, 반복문 사용이 불가능함

왜냐하면 이름이 별도로 있기 때문 그래서 우리는 같은 형태의 많은 데이터를 반복문으로 처리하기 위해 

메모리에 연속적으로 저장해놓고 쪼개서 사용 하는 방법을 사용합니다.

이를 배열이라 한다!

 

배열 선언

 

배열 또한 다른 자료형처럼 선언을 통해서 저장 공간을 확보합니다.

다만, 5과목의 점수를 처리할 때 기존처럼 int형 변수를 하나씩 선언하지 않고, 하나의 이름으로 한꺼번에 확보합니다.

또 저장 공간의 개수와 관계없이 이름은 하나만 사용합니다.

 

배열 선언은 간단합니다.

요소의 자료형에 이름을 붙이고 필요한 요소의 개수를 표시합니다.

int형의 요소가 5개인 배열을 선언하는 예는 다음과 같다.

 

int ary[5];  자료형 배열명 [요소개수]

 

배열명은 변수명을 짓는 규칙에 따라 적절한 이름을 사용합니다.

배열을 하나 선언한 다음 5명의 나이를 저장하고 사용하는 방법을 예제로 확인하자

 

#include<stdio.h>


int main(void)
{
	int ary[5];

	ary[0] = 10;
	ary[1] = 20;
	ary[2] = ary[0] + ary[1];
	scanf_s("%d", &ary[3]);

	printf("%d\n", ary[2]);
	printf("%d\n", ary[3]);
	printf("%d\n", ary[4]);

	return 0;

}

50
30
50
-858993460  <- 쓰레기 값

이렇게 나옴

 

배열의 사용

배열을 선언할 때와 배열 요소를 사용할 때 대괄호( [ ] ) 안의 숫자는 의미가 다름

선언할 때는 배열 요소의 전체 개수를 표시하며, 사용할 때는 각 요소가 배욜에서 몇 번째에 있는 지를 의미함

이 값이 첨자이며, 배열의 첨자는 0부터 시작하므로 최대 '배열 요소개수 -1' 까지 만 사용합니다.

즉, 배열 요소의 개수가 5개면 첨자는 0부터 4까지만 사용

 

위의 배열은 ary[4] 에는 값을 저장하지 않았으므로 쓰레기 값이 출력 됩니다.

 

배열 초기화

 

배열도 변수와 마찬가지로 최초 할당된 저장 공간에는 쓰레기 값이 저장되어 있습니다.

그렇기 때문에 배열도 원하는 값을 가지려면 선언과 동시에 초기화를 해주어야 합니다.

 

배열은 중괄호( { } ) 로 묶어서 초기화 합니다.

 

초기화1 기본적인 초기화 방법

int ary1[5] = { 1,2,3,4,5 };

초기값은 첫 번째 요소부터 차례로 초기화 됩니다.

 

초기화2 초깃값이 배열 요소부터 차례로 초기화 됩니다.

int ary2[5] = {1,2,3};

이때는 왼쪽부터 차례로 초기화하고 남은 배열 요소는 모두 0으로 채웁니다.

 

초기화3 자동 초기화 기능을 사용하면 배열 요소 개수가 아무리 많아도 모든 요소를 쉽게 0으로 초기화할 수 있다.

int ary2[1000] = {0};

 

초기화4 배열 요소가 개수가 생략된 형태도 있습니다.

int ary3[] = { 1, 2, 3};

이 경우 컴파일러는 초깃값 개수만큼 배열 요소 개수를 정하고 저장 공간을 할당합니다.

즉, ary3은 다음과 같이 메모리에 저장 공간이 할당되고 초기화 됩니다.

 

초기화 5 double형 배열과 char형 배열을 선언하고 초기화 합니다. 각각의 자료형에 맞게 double형 배열은 

실수 값으로 초기화하고 char형 배열은 문자로 초기화 됩니다.

 

 

배열의 초기화는 선언 시 최초 한번만 가능합니다. 그 이후에는 배열 요소에 일일이 값을 대입해야 하며,

초기화 때처럼 중괄호 ( {} )를 사용한 대입 연산으로 한 번에 값을 바꾸는 것은 불가능합니다.

 

반응형