Computer >> Máy Tính >  >> Lập trình >> lập trình C

Những hạn chế của mảng trong ngôn ngữ C là gì?

Mảng là một loại cấu trúc dữ liệu có thể lưu trữ một tập hợp tuần tự có kích thước cố định của các phần tử cùng kiểu.

Mảng được sử dụng để lưu trữ một tập hợp dữ liệu, nhưng thường hữu ích hơn nếu coi một mảng là một tập hợp các biến cùng kiểu.

Hạn chế

Các hạn chế của mảng được giải thích bên dưới -

  • Một mảng được tạo thành sẽ là đồng nhất. Có nghĩa là, trong một mảng số nguyên chỉ có thể lưu trữ các giá trị nguyên, trong khi trong một mảng thực chỉ có giá trị động và mảng ký tự chỉ có thể có các ký tự. Do đó, không mảng nào có thể có giá trị của hai kiểu dữ liệu.

  • Trong khi khai báo một mảng, kích thước của một mảng là bắt buộc và kích thước phải là một hằng số. Do đó, thiếu hoặc lãng phí bộ nhớ.

  • Cần phải dịch chuyển để chèn hoặc xóa các phần tử trong một mảng.

  • Mảng không kiểm tra ranh giới:Trong ngôn ngữ C, chúng tôi không thể kiểm tra xem các giá trị được nhập vào một mảng có vượt quá kích thước của mảng đó hay không.

  • Dữ liệu được nhập bằng chỉ số con, vượt quá kích thước mảng và sẽ được đặt bên ngoài mảng. Nói chung, trên đầu dữ liệu hoặc chính chương trình.

  • Điều này ít nhất sẽ dẫn đến những kết quả không thể đoán trước được. Ngoài ra, sẽ không có thông báo lỗi để cảnh báo lập trình viên về việc vượt quá kích thước mảng. Trong một số trường hợp, chương trình có thể bị treo.

Do đó, chương trình sau có thể cho kết quả không mong muốn -

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

Ví dụ

Sau đây là chương trình C để hiển thị tổng của hai mảng -

#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]);
   }
}

Đầu ra

Khi chương trình trên được thực thi, nó tạo ra kết quả sau -

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