c语言中一个整数(int)二维数组可以设置最多多少行跟多少列

int[ ? ][ ? ]
中括号里面可以填多大的值,这个有限定的吗?怎么我软件最多只能输入100跟500,有没有什么方法让它变大点???谢谢了!!

理论上没有限制,实际上,计算机有物理内存大小限制,整型数也有最大值的限制。
想开大的数组,可以用动态分配。
定态数组,作为全局量可以开得大。例如:
#include <stdio.h>
int a[1001][1001]; // 全局量
main(){
a[1000][1000]=1000;
printf("%d",a[1000][1000]);
return 0;
}
若放到 main(){} 里,就是局部量,就不能用这么多单元了。
温馨提示:答案为网友推荐,仅供参考
第1个回答  2013-07-24
受编译模式和计算机内存(包括硬盘上的虚拟内存)限制。
我们来算一下int x[100][500];占用了多少内存,假设int型变量是32位的,即4字节:
4*100*500=200000字节=196k字节,这应当是比较小的,有可能是你的编译设置选项导致的限定。
普通在PC机上,你用huge模式的编译选项可以开出G级的数组,可用来放置很大的图象之类的数据。
上面所说的前提是这个变量如果开设成全局的,你如果在某函数中开设,那么它的尺寸就要收到编译选项中堆栈尺寸的限制。
第2个回答  推荐于2016-11-30

1、理论上没有限制,实际上,计算机有物理内存大小限制,整型数也有最大值的限制。想开大的数组,可以用动态分配。定态数组,作为全局量可以开得大。

2、例如:

#include <stdio.h>
int a[1001][1001];  // 全局量
main(){
a[1000][1000]=1000;
printf("%d",a[1000][1000]);
return 0;
}

第3个回答  2013-07-24
你可以这样子计算,根据操作系统中一个int型变量所占用的字节数,然后在看看你这个变量时放在堆里面还是栈里面 在根据堆栈的大小除以int型变量的字节数,就得到括号里面两个数相乘的集。两数成绩不要超过这个值即可。
第4个回答  2021-02-11
我试出来是:
int a[22335][22335];
这是两个相等的最大,我电脑上全局变量是这样
相似回答