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+ 次查看

开启您的 职业生涯

通过完成课程获得认证

开始学习
广告