본문 바로가기

공부/C언어

(C 예제) 배열 정의 및 예제

다수의 정보를 저장하기 위해 변수를 여러 개 선언하는 것은 매우 번거롭다.

이때는 배열을 선언하면 된다.

 

1차원 배열을 선언하기 위해서는 배열을 이루는

요소의 자료형,

배열의 이름,

배열의 길이가 필요하다.

 

간단한 예제들이다.

일일히 다 넣는 방법이다.

반복문을 사용한다면 아래와 같다.

위의 반복문에는 i범위에 숫자를 직접 줬다.

아래는 sizeof함수로 숫자를 대신 넣어봤다.

n의 사이즈인 20

int의 사이즈인 4

둘을 나눈 5가 i의 범위가 된다.


반복문으로 알파벳에 1씩 더해서 알파벳 전체를 출력시켜봤다.


arr[0] = 10으로 arr 배열의 첫 번째 요소에 10을 저장한다.

이렇게 선언된 1차원 배열에 접근할 수 있다.


배열 선언과 동시에 초기화하기

arr2는 컴파일러가 배열의 길이정보를 채워준다.

 

관련 예제를 보자.

// 배열 선언, 초기화, 접근 예제
#include <stdio.h>

void main(void)
{
	int arr1[5] = { 1, 2, 3, 4, 5 };
	int arr2[ ] = { 1, 2, 3, 4, 5, 6, 7 };
	int arr3[5] = { 1, 2 };
	int arrlen1, arrlen2, arrlen3, i;

	printf("배열 arr1의 크기: %d \n", sizeof(arr1));
	printf("배열 arr2의 크기: %d \n", sizeof(arr2));
	printf("배열 arr3의 크기: %d \n\n", sizeof(arr3));

	arrlen1 = sizeof(arr1) / sizeof(int);
	arrlen2 = sizeof(arr2) / sizeof(int);
	arrlen3 = sizeof(arr3) / sizeof(int);

	for (i = 0; i < arrlen1; i++)
		printf("%d ", arr1[i]);
	printf("\n");

	for (i = 0; i < arrlen2; i++)
		printf("%d ", arr2[i]);
	printf("\n");

	for (i = 0; i < arrlen3; i++)
		printf("%d ", arr3[i]);
	printf("\n");
}

char형 배열의 문자열 사용 및 입출력


널 문자

배열에 문자열을 저장하면, 문자열의 끝에 널 문자라고 불리는

\0가 삽입된다.

널 문자는 문자열의 끝을 의미한다.

 

널 문자는 %c를 이용해서 출력 시 아무것도 나오지 않고, 실제로

모니터 출력에서 아무런 의미를 갖지 않는다.

아스키 코드 값은 0이다.

 

공백의 아스키 코드 값은 32이다.

 

문자열과 문자 배열은 다르다.

문자열에는 꼭 널 문자가 들어간다.

char arr1[ ] = { 'A', 'B' }; // 문자배열
char arr2[ ] = { 'A', 'B', '\0' }; // 문자열

 

문자열에서 널 문자가 필요한 이유

 

배열의 시작위치에서 문자열이 저장되기 시작하므로, 시작위치는 쉽게 확인이 가능하다.

하지만 배열의 끝이 무조건 문자열의 끝은 아니므로 널 문자가 삽입되지 않으면

문자열의 끝은 확인 불가능하다.

 

아래의 간단한 예를 보자.

배열 str의 시작위치를 기준으로해서 널 문자를 만날 때까지 출력을 한다.


scanf 함수를 이용한 문자열 입력

scanf함수로 서식문자 %s를 사용해서 문자열을 입력할 수 있다.

문자열은 &연산자를 붙이지 않는다.


scanf 함수의 문자열 입력 특성

scanf 함수는 공백을 기준으로 데이터의 수를 구분하기 때문에

공백을 포함하는 문자열을 한번의 scanf 함수호출로 읽을 수 없다.