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 :
");    for(i=0;i<5;i++){       printf("array1[%d] :
",i);       scanf("%d",&array1[i]);    }    printf("Enter the values of array2 :
");    for(i=0;i<5;i++){       printf("array2[%d] :
",i);       scanf("%d",&array2[i]);    }    printf("Elements in the sum of array1 and array2 are:
");    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

更新於: 2021-03-13

11K+ 次檢視

開啟您的 職業生涯

透過完成課程獲得認證

開始學習
廣告

© . All rights reserved.