Computer >> 컴퓨터 >  >> 프로그램 작성 >> C 프로그래밍

C 언어에서 배열의 한계는 무엇입니까?

<시간/>

배열은 동일한 유형의 요소를 고정 크기로 순차적으로 수집할 수 있는 일종의 데이터 구조입니다.

배열은 데이터 모음을 저장하는 데 사용되지만 종종 배열을 같은 유형의 변수 모음으로 생각하는 것이 더 유용합니다.

제한 사항

배열의 한계는 아래에 설명되어 있습니다 -

  • 형성된 어레이는 균질할 것입니다. 즉, 정수 배열에서는 정수 값만 저장할 수 있고, 부동 소수점 배열에서는 부동 값과 문자 배열만 문자만 가질 수 있습니다. 따라서 어떤 배열도 두 가지 데이터 유형의 값을 가질 수 없습니다.

  • 배열 선언 시 배열의 크기 전달은 필수이며 크기는 일정해야 합니다. 따라서 메모리가 부족하거나 낭비됩니다.

  • 배열의 요소를 삽입하거나 삭제하려면 이동이 필요합니다.

  • 배열은 경계를 확인하지 않습니다. C 언어에서는 배열에 입력된 값이 해당 배열의 크기를 초과하는지 여부를 확인할 수 없습니다.

  • 아래 첨자로 입력된 데이터는 배열 크기를 초과하여 배열 외부에 배치됩니다. 일반적으로 데이터 또는 프로그램 자체의 상단에 있습니다.

  • 이것은 최소한 예측할 수 없는 결과를 초래할 것입니다. 또한 프로그래머에게 배열 크기를 초과할 경우 경고하는 오류 메시지가 표시되지 않습니다. 경우에 따라 프로그램이 중단될 수 있습니다.

따라서 다음 프로그램은 원하지 않는 결과를 줄 수 있습니다 -

int a[10],i;
for(i=0;i<=20;i++)
a[i]=i;

예시

다음은 두 배열의 합을 표시하는 C 프로그램입니다 -

#include<stdio.h>
void main(){
   //Declaring array with compile time initialization//
   int array1[5],array2[5],sum[5];
   //Declaring variables//
   int i;
   //Printing O/p using for loop//
   printf("Enter the values of array1 :\n");
   for(i=0;i<5;i++){
      printf("array1[%d] : \n",i);
      scanf("%d",&array1[i]);
   }
   printf("Enter the values of array2 :\n");
   for(i=0;i<5;i++){
      printf("array2[%d] :\n",i);
      scanf("%d",&array2[i]);
   }
   printf("Elements in the sum of array1 and array2 are:\n ");
   for(i=0;i<5;i++){
      sum[i]=array1[i]+array2[i];
      printf("%d ",sum[i]);
   }
}

출력

위의 프로그램이 실행되면 다음과 같은 결과가 생성됩니다 -

Enter the values of array1 :
array1[0] :2
array1[1] :3
array1[2] :1
array1[3] :2
array1[4] :3
Enter the values of array2 :
array2[0] :4
array2[1] :5
array2[2] :3
array2[3] :2
array2[4] :1
Elements in the sum of array1 and array2 are: 6 8 4 4 4