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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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() 里,就是局部量,就不能用这么多单元了。
参考技术A 受编译模式和计算机内存(包括硬盘上的虚拟内存)限制。
我们来算一下int x[100][500];占用了多少内存,假设int型变量是32位的,即4字节:
4*100*500=200000字节=196k字节,这应当是比较小的,有可能是你的编译设置选项导致的限定。
普通在PC机上,你用huge模式的编译选项可以开出G级的数组,可用来放置很大的图象之类的数据。
上面所说的前提是这个变量如果开设成全局的,你如果在某函数中开设,那么它的尺寸就要收到编译选项中堆栈尺寸的限制。
参考技术B

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

2、例如:

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

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

以上是关于c语言中一个整数(int)二维数组可以设置最多多少行跟多少列的主要内容,如果未能解决你的问题,请参考以下文章

使用 NULL 数组将内存分配给二维数组 (c)

C语言二维数组指针变量是啥,int (*p)[2]啥意思

c语言中怎样输入一个3*3的二维数组存储到文件中在文件中按顺序输出二维数组

c语言数组问题

C语言怎么定义一个二维数组可以使每行的输入长度任意

在C语言中定义二维数组long a[3][5],则数组占多少字节的存储空间?