웹사이트 검색

Linux C 프로그래밍 자습서 24부 - 다차원 배열


이 페이지에서

  1. C의 다차원 배열
  2. 결론

이 지속적인 배열 개념을 따르고 있다면. 빠른 새로 고침을 위해 어레이는 동일한 유형의 여러 값을 연속 저장소에 저장하는 데 사용됩니다.

C의 다차원 배열

예를 들어 다음은 5개의 숫자를 저장할 수 있는 정수 배열입니다.

int arr[5]

배열에 저장된 모든 값은 배열 이름과 해당 인덱스 값을 사용하여 쉽게 액세스할 수 있습니다. 인덱스는 0부터 시작하므로 배열의 두 번째 요소에 액세스하려면 다음과 같이 할 수 있습니다.

arr[1]

다음 프로그램은 사용자로부터 5개의 정수를 입력으로 받아 배열에 저장한 다음 다시 사용자에게 출력합니다.

#include <stdio.h>

int main()
{
int arr[5],i;

printf("Enter 5 integer values\n");

for(i=0;i<5;i++)
scanf("%d",&(arr[i]));

printf("You entered the following values:\n");

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


return 0;
}

이제 이러한 유형의 배열을 일차원 배열이라고 합니다. 예, 이는 다차원 배열(2차원 배열, 3차원 배열 등)도 존재함을 의미합니다. 예를 들어 다음은 2차원 배열입니다.

int arr[2][3]

이 배열을 다음과 같이 2행 3열이 있는 2차원 숫자 표로 시각화할 수 있습니다.

x x x
x x x 

따라서 이 배열이 보유할 수 있는 요소는 총 6개입니다. 배열이 보유할 수 있는 총 요소 수는 배열 선언의 인덱스를 곱하여 쉽게 계산할 수 있다는 점을 언급할 가치가 있습니다. 예를 들어, arr의 경우 어레이의 용량은 6과 같은 2x3을 수행하여 계산할 수 있습니다.

초기화 부분에서 arr과 같은 2차원 배열은 다음과 같은 방법으로 초기화할 수 있습니다.

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

위의 초기화로 인해 이러한 값을 2차원 배열로 시각화하기가 어렵기 때문에 선택할 수 있는 다른(읽기: 더 나은) 방법이 있습니다. 여기있어:

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

이제 숫자 1,2,3이 한 행에 있고 4,5,6이 다른 행에 있음을 쉽게 시각화할 수 있습니다. 여기 있습니다:

1 2 3
4 5 6

C에서 2차원 배열을 처리하는 방법에 대해 다음은 사용자로부터 이 6개의 값을 받아 2차원 배열 arr에 저장한 다음 최종적으로 사용자에게 다시 출력하는 작은 프로그램입니다.

#include <stdio.h>

int main()
{
int arr[2][3],i,j;

printf("You are about to enter values for a 2x3 array\n");

for(i=0;i<2;i++)
{
for(j=0;j<3;j++)
{
printf("\n Enter value to be stored at row %d and column %d :: ",i,j);
scanf("%d",&arr[i][j]);
}
}


printf("\n You entered the following values:\n");

for(i=0;i<2;i++)
{
for(j=0;j<3;j++)
{
printf("\n Row %d and column %d = %d\n",i,j,arr[i][j]);
}
}


return 0;
}

결과는 다음과 같습니다.

You are about to enter values for a 2x3 array 

Enter value to be stored at row 0 and column 0 :: 1

Enter value to be stored at row 0 and column 1 :: 2

Enter value to be stored at row 0 and column 2 :: 3

Enter value to be stored at row 1 and column 0 :: 4

Enter value to be stored at row 1 and column 1 :: 5

Enter value to be stored at row 1 and column 2 :: 6


You entered the following values:

Row 0 and column 0 = 1

Row 0 and column 1 = 2

Row 0 and column 2 = 3

Row 1 and column 0 = 4

Row 1 and column 1 = 5

Row 1 and column 2 = 6

지금까지 2차원 배열에 대한 기본 정보였습니다. 3차원 배열은 어떻습니까? 음, 같은 줄에서 3차원 배열도 정의하고 초기화할 수 있습니다. 예를 들면 다음과 같습니다.

int arr[2][3][4]

그렇다면 이 어레이를 시각화하는 방법은 무엇일까요? 음, 3차원 세계(우리가 살고 있는 세계)를 생각한 다음 서로 수직인 3차원을 시각화합니다. 이것이 이 배열의 3차원이 맞는 방식입니다.

24개 요소(2x3x4)의 용량을 전달하는 이 배열은 다음과 같은 방법으로 초기화할 수 있습니다.

int x[2][3][4] = 
 { 
   { {1,2,3,4}, {5,6,7,8}, {9,10,11,12} },
   { {13,14,15,16}, {17,18,19,20}, {21,22,23,24} }
 };

다음은 3차원 배열을 사용하는 C 프로그램입니다.

#include <stdio.h>

int main()
{
int arr[2][3][4],i,j,k;

printf("You are about to enter values for a 2x3x4 array\n");

for(i=0;i<2;i++)
{
for(j=0;j<3;j++)
{
for(k=0;k<4;k++)
{
printf("\n Enter value to be stored at arr[%d][%d][%d] :: ",i,j,k);
scanf("%d",&arr[i][j][k]);
}
}
}


printf("\n You entered the following values:\n");

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


return 0;
}

결론

이 자습서에서는 다차원 배열의 개념을 논의하여 배열에 대한 기존 이해를 확장했습니다. 이러한 배열이 어떻게 작동하는지 더 잘 이해하려면 시스템에서 이 자습서에 사용된 예제를 시도하고 새 예제를 만드는 것이 좋습니다. 의심이나 질문이 있는 경우 아래에 의견을 남겨주십시오.