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

以上是 C语言中数组的局限性是什么? 的全部内容, 来源链接: utcz.com/z/354439.html

回到顶部