C 프로그래밍 · 2 min read · Feb 14, 2026

리눅스 C 프로그래밍 튜토리얼 7부: 배열

그래서 우리는 이미 C 프로그래밍에서 변수의 개념에 대해 논의했습니다 (여기와 여기). 빠르게 복습하자면, 변수는 특정 유형의 값을 보유할 수 있는 것입니다 - 정수, 문자 또는 부동 소수점일 수 있습니다. 그러나 변수에는 하나의 제한이 있습니다: 주어진 시간에 단일 값만 보유할 수 있습니다.

즉, 여러 값을 보유하려면 동일한 수의 변수를 다뤄야 합니다. 예를 들어, 프로그램이 사용자로부터 10개의 정수 값을 받아서 출력하도록 하려면, 다음과 같이 작성해야 합니다:

#include   
  
int main()  
{  
 int a=0,b=0,c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0;  
 printf("10개의 정수 값을 입력하세요\n");  
 scanf("%d",&a);  
 scanf("%d",&b);  
 scanf("%d",&c);  
 scanf("%d",&d);  
 scanf("%d",&e);  
 scanf("%d",&f);  
 scanf("%d",&g);  
 scanf("%d",&h);  
 scanf("%d",&i);  
 scanf("%d",&j);  
   
 printf("입력한 값은 다음과 같습니다:\n");  
 printf("%d\n",a);  
 printf("%d\n",b);  
 printf("%d\n",c);  
 printf("%d\n",d);  
 printf("%d\n",e);  
 printf("%d\n",f);  
 printf("%d\n",g);  
 printf("%d\n",h);  
 printf("%d\n",i);  
 printf("%d\n",j);  
   
  
 return 0;  
}

또는 다음과 같이:

#include   
  
int main()  
{  
 int a=0,b=0,c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0;  
   
 printf("10개의 정수 값을 입력하세요\n");  
 scanf("%d %d %d %d %d %d %d %d %d %d",&a,&b,&c,&d,&e,&f,&g,&h,&i,&j);  
   
 printf("입력한 값은 다음과 같습니다:\n");  
 printf("%d %d %d %d %d %d %d %d %d %d\n",a,b,c,d,e,f,g,h,i,j);  
   
  
 return 0;  
}

두 번째 접근 방식은 작성된 코드 줄 수 측면에서 약간 더 나을 수 있지만, 여전히 더 나은 방법이 있으며, 그것은 정수 배열을 사용하는 것입니다.

네, 동일한 유형의 여러 값을 보유해야 하는 경우 배열을 선택해야 합니다. 다음은 10개의 값을 보유할 수 있는 정수 배열을 정의하는 방법입니다:

int arr[10]

여기서 ‘int’는 배열 ‘arr’이 저장할 값의 유형을 나타냅니다. 대괄호 안의 숫자 10은 ‘arr’의 용량이 10개의 값임을 나타냅니다. 이제 이 배열을 사용하는 코드 조각은 다음과 같습니다:

#include   
  
int main()  
{  
 int arr[10],i;  
   
 printf("10개의 정수 값을 입력하세요\n");  
   
 for(i=0;i<10;i++)  
 scanf("%d",&(arr[i]));  
   
 printf("입력한 값은 다음과 같습니다:\n");  
   
 for(i=0;i<10;i++)  
 printf("%d\n",arr[i]);  
   
  
 return 0;  
}

우리가 이미 이전 튜토리얼에서 scanf 및 printf 함수에 대해 논의했으므로, 더 알고 싶다면 해당 기사들을 참조할 수 있습니다.

배열로 돌아가서, 위 코드에서 ‘for’ 루프가 i=0으로 시작하는 것을 관찰했을 것입니다. 이는 배열 첨자(대괄호 안의 숫자)가 항상 0부터 시작하기 때문입니다. 따라서 여기서 우리의 경우, arr[0]은 사용자가 입력한 첫 번째 값을 나타내고, arr[1]은 두 번째 값, 그리고 arr[9]는 10번째 값을 나타냅니다.

각 값이 배열에 저장된 메모리 주소에 쉽게 접근할 수 있다는 점도 언급할 가치가 있습니다. 이는 배열 이름인 ‘arr’을 사용하여 수행할 수 있습니다. 따라서 코드에서 ‘arr’만 사용하면, 이는 첫 번째 요소의 메모리 주소에 불과합니다.

마찬가지로 두 번째 요소의 메모리 주소에 접근하려면 ‘arr+1’을 사용하십시오. 세 번째 요소의 경우 ‘arr+2’를 사용하고, 그 다음 요소도 같은 방식으로 접근할 수 있습니다. 다음 코드 조각과 그 출력은 더 나은 아이디어를 제공해야 합니다.

#include   
  
int main()  
{  
 int arr[10],i;  
   
 printf("첫 번째와 두 번째 값의 주소는: %u %u\n", arr, arr+1);  
   
 return 0;  
}

그리고 출력은 다음과 같습니다:

첫 번째와 두 번째 값의 주소는: 2904035888 2904035892

보시다시피, 이러한 주소에는 4바이트의 차이가 있습니다 - 이는 하나의 정수 값이 내 시스템에서 4바이트를 차지하기 때문입니다.

이 튜토리얼에서는 배열의 기본 사항에 대해 논의했습니다. 우리는 정수 배열의 예만 제공했음을 유의하십시오. 문자와 같은 다른 유형의 배열도 가질 수 있습니다. 이 튜토리얼에서 사용한 예제를 시도해 보시고, 의문이나 질문이 있으면 아래 댓글 섹션에 알려주십시오.

Share: X/Twitter LinkedIn

새 게시물을 받은 편지함에서 받기

스팸은 없습니다. 언제든지 구독 해지 가능합니다.