c语言函数定义数组长度 c语言数组长度( 二 )


其二,简洁性 。9类控制语句和32个关键字是C语言所具有的基础特性,使得其在计算机应用程序编写中具有广泛的适用性 , 不仅可以适用广大编程人员的操作,提高其工作效率,同时还能够支持高级编程,避免了语言切换的繁琐 。
怎么用C语言定义一个无限长的数组?C语言支持定义一个不显式定义长度的数组c语言函数定义数组长度,即通过初始化数据来分配数组长度 。
比如int a[] = {1,2,3,4,5}; 数组a的长度没有显式给出c语言函数定义数组长度 , 由于有5个初始化数据,所以分配空间长度为5个int型 。
但是无论如何定义,数组的长度都是固定的,在定义的时候就已经分配好空间,从这个角度上C语言无法定义无限长的数组 。但很多实际应用中又事先无法确定数组的长度,对于这类情况 , 一般有两种方法可以使用 。
1 由malloc和realloc两个函数,分配动态空间,随时按需改变数组的最大长度 。
通过下面例子来理解该方法:
#include stdio.h
#include stdlib.h
int main()
{
int size=100;//最初为100个元素空间 。
int *a = NULL;
int i = 0;
a = malloc(sizeof(int) * size);
if(a == NULL) return -1;
while(scanf("%d", a+i) == 1)//循环向a中输入数据,直到输入非数值字符为止
{
i++;
if(i == size)//数组空间不足
{
size *=2; //将数组空间扩大二倍,也可以改用size+=100;之类的操作 , 使size每次增加固定值 。
a=realloc(a,size);//分配新的空间
if(a==NULL)
{
return -1;//这种情况下运行载体(如PC)内存不足以提供,中断程序 。
}
}
}
if(a) free(a);//对申请的内存进行释放 。
return 0;
}
从以上程序可以看到 , 这种方式的原理就是每当数组空间不足时,利用函数realloc分配一段新的内存空间以增大数组长度 。直到占满所有剩余空间 。
如果到占满所有空间还是无法存下数据,那么是硬件无法支持了 。
所以这种方法可以做到软件意义上的无限大数组空间 。
但是这种方法代码量比较大 , 而且需要频繁的进行内存的分配,如果实现知道数据的最大可能规模,那么可以用另一个方法 。
2 事先知道数据的最大规模,比如统计一个班的分数时,一个班最多不超过百人,那么可以直接定义一个长度为100的数组,或者保险起见 , 定义一个长度为1000的数组,并对其操作 。这样在操作范围内,这个就是一个“无限长”的数组了 。
【c语言函数定义数组长度 c语言数组长度】c语言函数定义数组长度的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于c语言数组长度、c语言函数定义数组长度的信息别忘了在本站进行查找喔 。

推荐阅读