Linux C 프로그래밍 자습서 7부: 배열


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

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

#include <stdio.h>

int main()
{
int a=0,b=0,c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0;
printf("Enter 10 integer values\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("You entered the following values:\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 <stdio.h>

int main()
{
int a=0,b=0,c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0;

printf("Enter 10 integer values\n");
scanf("%d %d %d %d %d %d %d %d %d %d",&a,&b,&c,&d,&e,&f,&g,&h,&i,&j);

printf("You entered the following values:\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 <stdio.h>

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

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

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

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

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


return 0;
}

이전 자습서 중 하나에서 scanf 및 printf 기능에 대해 이미 논의했으므로 이에 대해 더 알고 싶은 경우 해당 기사를 참조할 수 있습니다.

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

배열에 저장된 각 값의 메모리 주소에 쉽게 액세스할 수 있다는 점도 언급할 가치가 있습니다. 이것은 배열 이름을 사용하여 수행할 수 있습니다. 이 경우 arr입니다. 따라서 코드에서 arr만 사용하면 첫 번째 요소의 메모리 주소만 사용됩니다.

마찬가지로 두 번째 요소의 메모리 주소에 액세스하려면 arr+1을 사용하십시오. 세 번째 요소에는 arr+2 등을 사용합니다. 다음 코드 조각과 그 출력은 더 나은 아이디어를 제공할 것입니다.

#include <stdio.h>

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

printf("The address of first and second values are: %u %u\n", arr, arr+1);

return 0;
}

결과는 다음과 같습니다.

The address of first and second values are: 2904035888 2904035892

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

이 자습서에서는 배열의 기본 사항에 대해 설명했습니다. 우리는 정수 배열의 예만 제공했다는 점에 유의하십시오. 문자와 같은 다른 유형의 배열도 가질 수 있습니다. 이 자습서에서 사용한 예제를 시도하고 의심이 가거나 문의 사항이 있는 경우 아래 의견 섹션에 알려주십시오.