c언어 프로그래밍 기초 문법 

 

배열

 

배열은 ‘같은 타입’의 여러 공간을 하나의 변수로 ‘다루는 것’이며 만들어지는 공간은 ‘연속’된다. 배열을 선언(생성) 하기 위해서는 [ ](대괄호)를 사용한다. 대괄호 안에 배열의 크기를 정하는 정수 값을 넣는다. 그리고 배열에는 ‘인덱스(index)’를 이용해 각 요소에 접근하고 사용할 수 있다. 여기서 인덱스는 간단하게 위치 또는 순서로 의미를 이해하면 된다. 참고로 모든 프로그래밍 언어에서 인덱스는 1이 아닌 0부터 시작한다. 따라서 마지막 순서의 인덱스는 길이에서 1을 뺀 값이 된다. 아래에 배열을 생성하는 여러 가지 형태들을 보여준다.

 

// 배열생성
int iArr1[5]; // 배열생성, 각 공간(5개의정수)은 초기화 되지 않음 (쓰레기값)

int iArr2[5] = { 1, 2, 3, 4, 5 }; // 배열생성과 동시에 초기화(순서대로) 

int iArr3[5] = { 1, 2 }; // 뒤에 나머지 공간3개는 자동으로 0이 대입

int iArr4[5] = { 0, };  // 모든 공간을0대입

int iArr5[] = { 10, 20, 30, 40, 50 }; // 자동으로 길이가5가된다.

 

1. 문자열 배열

 

여기서 char는 1개 문자를 표현하는 자료형이다. char의 배열 형태는 ‘문자열’을 표현할 수 있다. 그리고 문자열의 끝에는 자동으로 ‘널 문자(\0)’가 삽입되어 있다는 것을 주의해야 한다. 널 문자는 정수 0을 의미하며 공백과는 다른 문자이다.(참고로 공백은 정수 32) 따라서 널 문자 때문에 배열 선언 시 원하는 문자열 길이보다 최소 1이상 여유 있게 선언해야 한다. 아래에 문자열 배열을 생성하는 여러 가지 형태들을 보여준다.

 

char szStr1[20] = "Hello"; // char 배열 선언과 동시에 초기화 할 때'문자열'사용가능

char szStr2[20] = { 'H', 'e', 'l', 'l', 'o', }; // szStr1과동일

char szStr3[20] = { 0, }; // 정수0은 널 문자

char szStr4[20]; // 초기화 하지 않은 문자 배열

char szStr[] = "Hello World"; // 길이가 자동으로 잡힌다.(11글자) 

 

2. 다차원 배열

 

다차원 배열은 2차원, 3차원 혹은 그 이상의 배열 형태를 말한다.

예를 들어 int iArr[2][3] = {0, }은 2행 3열의 행렬 형태를 나타낸다. 아래에는 2차원 배열 생성 형태를 나타낸다.

 

// 2차원 배열 생성 시 초기값 넣기
int iArr[2][3] = { {1, 2, 3}, {4, 5, 6} };
int iArr[2][3] = { {1, 2, 3},
		{4, 5, 6} }; 

 

 

예제

#include <stdio.h>

void main()
{
	// 2차원 문자배열로 동물이름 입력 받기 
	char szArrAnimal[3][20] = { 0, }; // 20글자 문자열이 3개 
	int i = 0;
	int iArrLen = 0;

	//				20칸 * 3개 = 60byte / 1개 행의 크기 (20byte) --> 3 (행의개수) 
	iArrLen = sizeof(szArrAnimal) / sizeof(szArrAnimal[0]);
	//		1차원 : iArr[1] ---> 2번째 요소 
	//		2차원 : iArr[1][1] --> 1행, 1열 요소 1개 
	//		       iArr[1] --> 1행 전체 의미 

	printf("동물 이름 입력\n");
	for (i = 0; i < iArrLen; i++)
	{
		printf("%d번 동물 : ", (i + 1));
		gets(szArrAnimal[i]); // 한 행 전체를 의미 = 1차원 문자배열과 같다. 
	}

	for (i = 0; i < iArrLen; i++)
	{
		printf("%d번 동물은 %s입니다.\n", (i + 1), szArrAnimal[i]);
	}

}

 

반응형

+ Recent posts