배열

코딩하는 기린·2022년 3월 5일
0

C

목록 보기
8/13

'배열(array)'은 동일한 자료형을 갖는 자료를 연속으로 기억공간에 나열한 것 입니다.

1차원 배열

배열의 선언

자료형 배열명[원소수];의 형태로 사용하며, 배열의 각각의 자료를 원소라고합니다. 대괄호로 나타낸 부분은 첨자라고하며 첨자의 개수에따라 하나면 '1차원 배열', 두개면 '2차원 배열', ...로 구분합니다. 그리고 첨자를 이용해 배열의 원소를 하나씩 사용할 수 있는데, 첨자에 숫자를 넣어서 사용할 수 있으며, 숫자는 0부터 시작합니다. 즉, 배열의 첫번째 원소는 '배열명[0]'이 되며 마지막 원소는 '배열명[배열크기-1]'이 되는 것 입니다.
예를 들어 int member_number[1000];이라는 배열은 배열명은 'member_number', 자료의 자료형은 int, 원소의 수는 '1000'인 1차원 배열입니다. 첫번쨰 원소의 호출은 'member_number[0]'을 통해 가능하며, 마지막 원소의 호출은 'member_number[999]'를 통해 가능합니다.

배열의 초기화

배열 선언 후 초기화

int array[3];	//배열 크기 : 3

array[0] = 1;	//배열의 첫번째 원소
array[1] = 2;	//배열의 두번째 원소
array[2] = 3;	//배열의 세번째(마지막) 원소

배열 선언 시 초기화

int array[3] = {1,2,3};		//배열 선언과 동시에 초기값 할당
int array[] = {1,2,3};		//배열 크기 생략시 원소의 수에따라 자동으로 크기를 지정합니다.
int array[3] = {1,2,};		//배열 크기보다 적은 수의 원소를 입력하면, 처음부터 순서대로 할당 후, 나머지는 0으로 초기화합니다.
int array[3] = {0};			//배열의 모든 원소의 초기값을 0으로 할당합니다.
int array[3] = {1,2,3,4};	//선언한 배열의 크기를 초과하므로 에러가 발생합니다.
int array[3] = {1,,3};		//끝 이외의 원소 자리에 공백을 두면 에러가 발생합니다.

배열의 사용

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

printf("%d\n", array[2]);

for(int i=0; i<5; i++){
	printf("%d ", array[i]);
}
3
1 2 3 4 5

다차원 배열

2차원 이상의 배열을 '다차원 배열(multidimensional array)'이라고 합니다.

2차원 배열

자료형 배열명[행 수][열 수];의 형태로, '(행 수)x(열 수)'개의 원소를 가집니다.

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

위와 같은 형태로 초기화가 가능합니다.

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

for(int i=0; i<2; i++){
    for(int j=0; j<3; j++){
        printf("%d ", array[i][j]);
    }
    printf("\n");
}

printf("%d\n", array[0][2]);
printf("%d\n", array[1][2]);
1 2 3
4 5 6
3
6

3차원 배열

자료형 배열명[면 수][행 수][열 수];의 형태로, '(면 수)x(행 수)x(열 수)'개의 원소를 가집니다.

int array[2][2][3] = {{{1,2,3},{4,5,6}},
					 {{7,8,9},{10,11,12}}};

위와 같은 형태로 초기화가 가능하며, 2차원 배열처럼 다른 형태로도 초기화가 가능합니다.

int array[2][2][3] = {{{1,2,3},{4,5,6}}, {{7,8,9},{10,11,12}}};

for(int i=0; i<2; i++){
    for(int j=0; j<2; j++){
        for(int k=0; k<3; k++){
            printf("%d ", array[i][j][k]);
        }
        printf("\n");
    }
    printf("\n");
}

printf("%d\n", array[0][0][2]);
printf("%d\n", array[0][1][2]);
printf("%d\n", array[1][0][2]);
printf("%d\n", array[1][1][2]);
1 2 3 
4 5 6

7 8 9
10 11 12 

3
6
9
12

char형 배열과 문자열

C에서는 따로 문자열(string)이라는 자료형이 없으므로 'char형 배열'이나 '포인터'를 사용해야합니다.
char형 배열은 문자열로 사용시 char 배열명[문자열 길이+1];의 형태로 사용합니다. 문자열 길이보다 1이 크게 할당하는 이유는 배열의 마지막 원소로 'null 문자(\0)'를 사용하여 문자열의 끝을 나타내기 때문입니다.
아래처럼 선언하고 초기화할 수 있으며, 문자열은 큰따옴표("")로 묶어줍니다.

char name[12] = "hello world";
char name[] = "hello world";
char name[12] = {'h','e','l','l','o',' ','w','o','r','l','d','\0'};
char name[] = {'h','e','l','l','o',' ','w','o','r','l','d','\0'};
char name[12] = "hello world";

printf("%s\n", name);

for(int i=0; i<12; i++){
	printf("%c", name[i]);
}
printf("\n");

char Name[12] = {'h','e','l','l','o',' ','w','o','r','l','d','\0'};

printf("%s\n", Name);

for(int i=0; i<12; i++){
	printf("%c", Name[i]);
}
hello world
hello world
hello world
hello world
profile
Coding Giraffe.

0개의 댓글