用c语言如何定义一个较大的二维数组,例如1000行1000列

直接定义编译时系统报错Array size too large

简单来说,直接定义就可以了。比如int a[1000][1000];

但是如果你的数组非常非常大,那就需要考虑栈内存问题了。因为直接定义的数组是存放在当前线程栈空间的。一般线程栈空间都会有默认值(可能有1MB到10MB不等),具体取决于操作系统的默认分配策略。也可以通过创建线程的时候自己设置。
更合适的方式是用动态分配内存,C语言中对应的是malloc函数。动态空间是在堆(Heap)上分配的,可以使用的内存一般都会很大。动态分配二维数组可以参考:
http://blog.csdn.net/dualeak/article/details/4677132
温馨提示:答案为网友推荐,仅供参考
第1个回答  推荐于2017-10-02
void main()
{
int a[1001][1001];
}
这样定义没有问题
Array size too large (数组太大)
分析:定义的数组太大,超过了可用内存空间。
可能是你的可用内存空间太小追问

你说的原因我也知道,那么要怎样定义一个较大的二维数组

追答

内存不够使,就定义不了,不是C语言的问题!

本回答被提问者采纳
第2个回答  2012-02-13
用int定义所占空间较大,如用unsigned char定义空间会节约很多,不过还是不能满足1000行1000列的要求,单片机内的数据存储单元是有限的,编程不仅仅是软件的事,也要了解所有单片机的内部结构与硬件资源,软硬结合才能更快进步,希望能对你学习c有所帮助。
第3个回答  2012-02-13
如果是在单片机的话, 你根本就不可能建立这种二维数组。
即使在PC端也不建议建立这么大的数组。追问

pc端的,真的没办法用c实现定义一个行列1000的二维数组吗

追答

其实你不必这么纠结于这个。 也很多种办法可以替代 数组。
效率高。逻辑清晰

相似回答