问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

可以定义一个无限大的数组吗

发布网友 发布时间:2022-04-04 02:22

我来回答

1个回答

热心网友 时间:2022-04-04 03:51

C语言支持定义一个不显式定义长度的数组,即通过初始化数据来分配数组长度。
比如int a[] = {1,2,3,4,5}; 数组a的长度没有显式给出,由于有5个初始化数据,所以分配空间长度为5个int型。
但是无论如何定义,数组的长度都是固定的,在定义的时候就已经分配好空间,从这个角度上C语言无法定义无限长的数组。但很多实际应用中又事先无法确定数组的长度,对于这类情况,一般有两种方法可以使用。

1 由malloc和realloc两个函数,分配动态空间,随时按需改变数组的最大长度。
通过下面例子来理解该方法:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
#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的数组,并对其操作。这样在操作范围内,这个就是一个“无限长”的数组了。
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
苹果电脑电池充不进电苹果电脑充不进去电是怎么回事 苹果电脑不充电没反应苹果电脑充电指示灯不亮充不了电怎么办 狗狗更加忠诚护家、善解人意,养一只宠物陪伴自己,泰迪能长多大... 描写泰迪狗的外形和特点的句子 国外留学有用吗 花钱出国留学有用吗 !这叫什么号 百万医疗赔付后是否可以续保 前一年理赔过医疗险还能续保吗? 医疗住院险理赔后还能购买吗? 低压电工证实践考的都是什么 低压电工考试流程 高压电工实操考试都考什么内容? 低压电工实操试题 低压电工要考实操了,正反转的原理图还是不懂,接线图到是记得,请各位电工朋友帮我解答下 低压电工中级证考试实操的项目有那些? 低压电工考试 干粉灭火器什么样子 低压电工实操考试,这些元件该怎么连接? 山东省低压电工实操,灭火器和实操各占多少分 c++ 数组大小必须在编译时确定? 请教 百题斩和润德教育哪个好 润德教育是正规的培训机构吗? 润德二中初中部需要什么条件 如何报考石家庄二中 石家庄精中和润德二中那个比较好 高中上润德二中号还是上24中好 石家庄高中上私立的润德二中好还是上公立的24中好_百度问一问 电脑上面最近垃圾信息很多,怎么处理 石家庄润德二中和精英中学初中哪个好?是初中!!!急! 怎么样才能彻底的删除掉空间里的垃圾信息? 黄冈润德中学分数线 麻辣酱料的标准 麻辣拌的酱料怎么配 麻辣辣椒酱的做法? 麻辣串的酱料怎么做 如何制作麻辣酱或料 黑鲨helo话筒失灵 麻辣烫酱料的配方 黑鲨helo为什么用蓝牙吃鸡说不了话? 黑鲨helo手机耳机没声音是尾插坏了吗? 黑鲨4打王者讲话为什么别人听不清楚 黑鲨手机很皮语音包别人听不见怎么解决? 函授的毕业证和正规全日制毕业证有什么区别? 为什么黑鲨helo玩不了绝地求生未来之役 全日制大专毕业证和函授大专毕业证的区别是什么? 高升专函授教育的文凭跟全日制的大专文凭有什么区别吗 函授本科毕业证和全日制本科毕业证有啥区别。 函授学历和普通全日制学历有什么区别? 函授本科考的学士学位和全日制考的的有区别吗 全日制学历和函授学历有什么区别?会影响找工作吗? 函授专科毕证书与全日制专科毕业证书有何区别?