定义一个很大的数组(为什么定义一个过大的数组或容器,应当把它把它定义为全局变量为宜)

2026-05-30 04:00:01 0

定义一个很大的数组(为什么定义一个过大的数组或容器,应当把它把它定义为全局变量为宜)

大家好,如果您还对定义一个很大的数组不太了解,没有关系,今天就由本站为大家分享定义一个很大的数组的知识,包括为什么定义一个过大的数组或容器,应当把它把它定义为全局变量为宜的问题都会给大家分析到,还望可以解决大家的问题,下面我们就开始吧!

本文目录

为什么定义一个过大的数组或容器,应当把它把它定义为全局变量为宜

  • 因为全局变量是存储在静态存储区分配的,这个空间很大
    局部变量是在栈空间上分配的,栈空间没那么大,太大了会溢出

  • 楼上正解,无须再答,楼主结贴吧!!!

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

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的数组,并对其操作。这样在操作范围内,这个就是一个“无限长”的数组了。

程序有内存管理了怎么定义一个大的数组

数组只是一个语法概念,可以认为你是要分配一段连续的内存,在应用层有2种方式:全局变量的方式,在函数外声明,最大应该不能超过4G Byte(32bit寻址最大值),int就除与4,doubel再除2局部变量的方式,在函数内声明,属于栈内存,就更小,确实跟操作系统和C库相关,进程都有栈限制的,可以输入命令ulimit查看,默认也就10K左右,当然你可以设置更大。不会有数专门说这个数组大小的问题,它涉及的知识点会,栈内存,data 段,以这些为关键字去看,整理理解吧。

C语言中如何定义一个很大的全局数组

定义全局数组跟定义全局变量是一样的,下面举例来具体说明如何定义全局数组:

#include《stdio.h》
int a;  // 定义一个int类型的全局数组,数组中包含100个元素,每个元素类型都是int型
void main()
{
    int i;
    for(i=0; i《100; i++)
        a = i;   // 对全局数组进行初始化
}

如何定义一个大数组

直接定义的话,是有限制的,因为直接定义是放在栈内存中的,
而栈内存是有限的,
所以,大量数据定义的话,应该放在堆内存中
定义成静态变量,或者new出空间来放数组
char *p=new char
const int temp
上面两种方法都是可以的,根据具体情况去用
不过,用new出来的一定要记得释放

OK,关于定义一个很大的数组和为什么定义一个过大的数组或容器,应当把它把它定义为全局变量为宜的内容到此结束了,希望对大家有所帮助。

定义一个很大的数组(为什么定义一个过大的数组或容器,应当把它把它定义为全局变量为宜)

本文编辑:admin

更多文章:


变形金刚完整历史(变形金刚是什么时候诞生的)

变形金刚完整历史(变形金刚是什么时候诞生的)

大家好,变形金刚完整历史相信很多的网友都不是很明白,包括变形金刚是什么时候诞生的也是一样,不过没有关系,接下来就来为大家分享关于变形金刚完整历史和变形金刚是什么时候诞生的的一些知识点,大家可以关注收藏,免得下次来找不到哦,下面我们开始吧!本

2025年12月25日 12:45

previous的短语(以前的,先前的英文)

previous的短语(以前的,先前的英文)

其实previous的短语的问题并不复杂,但是又很多的朋友都不太了解以前的,先前的英文,因此呢,今天小编就来为大家分享previous的短语的一些知识,希望可以帮助到大家,下面我们一起来看看这个问题的分析吧!本文目录以前的,先前的英文“早先

2025年12月18日 06:00

activitythread工作原理(ViewModel的原理)

activitythread工作原理(ViewModel的原理)

其实activitythread工作原理的问题并不复杂,但是又很多的朋友都不太了解ViewModel的原理,因此呢,今天小编就来为大家分享activitythread工作原理的一些知识,希望可以帮助到大家,下面我们一起来看看这个问题的分析吧

2026年5月26日 05:00

substr函数的功能(substr函数怎么用)

substr函数的功能(substr函数怎么用)

各位老铁们好,相信很多人对substr函数的功能都不是特别的了解,因此呢,今天就来为大家分享下关于substr函数的功能以及substr函数怎么用的问题知识,还望可以帮助大家,解决大家的一些困惑,下面一起来看看吧!本文目录substr函数怎

2025年9月18日 18:00

maven配置文件放哪里(maven打包时如何把包下面的XML配置文件也包含)

maven配置文件放哪里(maven打包时如何把包下面的XML配置文件也包含)

大家好,maven配置文件放哪里相信很多的网友都不是很明白,包括maven打包时如何把包下面的XML配置文件也包含也是一样,不过没有关系,接下来就来为大家分享关于maven配置文件放哪里和maven打包时如何把包下面的XML配置文件也包含的

2025年9月12日 17:30

compensation 单词(compensation同义词)

compensation 单词(compensation同义词)

“compensation 单词”相关信息最新大全有哪些,这是大家都非常关心的,接下来就一起看看compensation 单词(compensation同义词)!本文目录compensation同义词C单词中的ion后缀compensati

2025年9月10日 19:15

carry网络用语(c指的是什么意思啊)

carry网络用语(c指的是什么意思啊)

大家好,carry网络用语相信很多的网友都不是很明白,包括c指的是什么意思啊也是一样,不过没有关系,接下来就来为大家分享关于carry网络用语和c指的是什么意思啊的一些知识点,大家可以关注收藏,免得下次来找不到哦,下面我们开始吧!本文目录c

2026年3月10日 23:15

boards翻译(主板英文怎么说)

boards翻译(主板英文怎么说)

大家好,boards翻译相信很多的网友都不是很明白,包括主板英文怎么说也是一样,不过没有关系,接下来就来为大家分享关于boards翻译和主板英文怎么说的一些知识点,大家可以关注收藏,免得下次来找不到哦,下面我们开始吧!本文目录主板英文怎么说

2025年7月28日 15:30

mentality是什么意思(victim mentality是什么意思)

mentality是什么意思(victim mentality是什么意思)

大家好,今天小编来为大家解答以下的问题,关于mentality是什么意思,victim mentality是什么意思这个很多人还不知道,现在让我们一起来看看吧!本文目录victim mentality是什么意思village mentali

2026年1月13日 09:00

microchip单片机有什么不同(Microchip、NXP、Fujitsu、Texas Instruments、Freescale 、STC几家单片机厂商各自特点及应用领域)

microchip单片机有什么不同(Microchip、NXP、Fujitsu、Texas Instruments、Freescale 、STC几家单片机厂商各自特点及应用领域)

大家好,如果您还对microchip单片机有什么不同不太了解,没有关系,今天就由本站为大家分享microchip单片机有什么不同的知识,包括Microchip、NXP、Fujitsu、Texas Instruments、Freescale

2026年9月20日 07:15

css样式工具(css样式只能修改不能删除)

css样式工具(css样式只能修改不能删除)

本篇文章给大家谈谈css样式工具,以及css样式只能修改不能删除对应的知识点,文章可能有点长,但是希望大家可以阅读完,增长自己的知识,最重要的是希望对各位有所帮助,可以解决了您的问题,不要忘了收藏本站喔。本文目录css样式只能修改不能删除w

2026年1月23日 18:30

redistributable x86(Microsoft Visual C++ 2015 Redistributable x86是系统自带的吗)

redistributable x86(Microsoft Visual C++ 2015 Redistributable x86是系统自带的吗)

各位老铁们,大家好,今天由我来为大家分享redistributable x86,以及Microsoft Visual C++ 2015 Redistributable x86是系统自带的吗的相关问题知识,希望对大家有所帮助。如果可以帮助到大

2025年7月24日 10:15

企业网站建设有哪些好处?企业网站建设的优势、好处是什么

企业网站建设有哪些好处?企业网站建设的优势、好处是什么

今天给各位分享企业网站建设有哪些好处的知识,其中也会对企业网站建设有哪些好处进行解释,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!本文目录企业网站建设有哪些好处企业网站建设的优势、好处是什么最常见企业网站公司有哪些企业网站建

2025年7月4日 21:00

readprocessmemory(U盘出现仅完成部分的ReadProcessMemory 或WriteProcessMemory请求)

readprocessmemory(U盘出现仅完成部分的ReadProcessMemory 或WriteProcessMemory请求)

大家好,如果您还对readprocessmemory不太了解,没有关系,今天就由本站为大家分享readprocessmemory的知识,包括U盘出现仅完成部分的ReadProcessMemory 或WriteProcessMemory请求的

2025年10月5日 22:00

power query拆分列的拆分依据(在wps或excel里面,在一段文本里面把两个数字按大小挑出来)

power query拆分列的拆分依据(在wps或excel里面,在一段文本里面把两个数字按大小挑出来)

大家好,今天小编来为大家解答以下的问题,关于power query拆分列的拆分依据,在wps或excel里面,在一段文本里面把两个数字按大小挑出来这个很多人还不知道,现在让我们一起来看看吧!本文目录在wps或excel里面,在一段文本里面把

2025年12月4日 07:15

according to legend(英语作文关于历史人物 少于100字数)

according to legend(英语作文关于历史人物 少于100字数)

本篇文章给大家谈谈according to legend,以及英语作文关于历史人物 少于100字数对应的知识点,文章可能有点长,但是希望大家可以阅读完,增长自己的知识,最重要的是希望对各位有所帮助,可以解决了您的问题,不要忘了收藏本站喔。本

2026年7月3日 01:15

java数组的长度怎么看(java中如何判断一个数组的长度呢比如我申请了一个数组int [] arr = new int[8];)

java数组的长度怎么看(java中如何判断一个数组的长度呢比如我申请了一个数组int [] arr = new int[8];)

这篇文章给大家聊聊关于java数组的长度怎么看,以及java中如何判断一个数组的长度呢比如我申请了一个数组int [] arr = new int[8];对应的知识点,希望对各位有所帮助,不要忘了收藏本站哦。本文目录java中如何判断一个数

2025年6月23日 17:30

deserts怎么读(deserts怎么读)

deserts怎么读(deserts怎么读)

本篇文章给大家谈谈deserts怎么读,以及deserts怎么读对应的知识点,文章可能有点长,但是希望大家可以阅读完,增长自己的知识,最重要的是希望对各位有所帮助,可以解决了您的问题,不要忘了收藏本站喔。本文目录deserts怎么读dese

2026年3月15日 02:15

mysql与大数据(mysql怎么处理大数据)

mysql与大数据(mysql怎么处理大数据)

各位老铁们好,相信很多人对mysql与大数据都不是特别的了解,因此呢,今天就来为大家分享下关于mysql与大数据以及mysql怎么处理大数据的问题知识,还望可以帮助大家,解决大家的一些困惑,下面一起来看看吧!本文目录mysql怎么处理大数据

2026年8月23日 08:15

excel函数总和(excel求和函数是什么)

excel函数总和(excel求和函数是什么)

其实excel函数总和的问题并不复杂,但是又很多的朋友都不太了解excel求和函数是什么,因此呢,今天小编就来为大家分享excel函数总和的一些知识,希望可以帮助到大家,下面我们一起来看看这个问题的分析吧!本文目录excel求和函数是什么e

2025年12月10日 08:30

近期文章

char ch用法(c语言char ch)
2026-09-24 18:45:02
本站热文

electronics软件(labcenter electronics是什么软件)
2025-05-22 23:45:02 浏览:134
博客是微博吗(博客是微博吗)
2025-05-22 22:45:01 浏览:111
diversity and distribution(悬赏英语短文)
2025-05-23 16:15:02 浏览:107
ios软件开发前景(iOS就业前景怎么样)
2025-05-22 23:00:01 浏览:102
next month(有The next month这个单词吗,和 next month有什么区别)
2025-05-23 02:30:01 浏览:102
patron(patron是什么意思)
2025-05-23 10:30:02 浏览:95
标签列表

热门搜索