你可以声明一个包含10个元素的非常简单的数组,并以这种方式使用它:
int myArray[10];
myArray[4] = 3;
std::cout << myArray[4];
或者将具有10x100个元素的2d数组声明为int myArray[10][100];
甚至用int myArray[30][50][70];
我甚至可以写作:
int complexArray[4][10][8][11][20][3];
complexArray[3][9][5][10][15][3] = 5;
std::cout << complexArray[3][9][5][10][15][3];
那么,声明数组时可以使用的最大维数是多少?
答案 0 :(得分:27)
标准建议实现接受至少256(ISO 14882,B.2),但它们可能支持更少或更多:
限制可能会限制包含下述数量或其他数量的数量。括号内的数字 建议将每个数量作为该数量的最小值。但是,这些数量是 仅指导方针,不确定合规性。
[...]
- 在声明[256]中修改算术,结构,联合或不完整类型的指针,数组和函数声明符(以任意组合)。
在C ++ 03和C ++ 11中都是一样的。
答案 1 :(得分:4)
我的第一篇文章!
对于它的价值,我的系统的限制在静态分配时只有30个维度,在堆栈上分配时只有19个维度。系统是AMD A10-7700K,64位(8 GB RAM)。使用默认设置在Visual C ++ 2013上编译。
请注意,要确定系统的最大值,请使用尺寸最小的最小数据类型(char)(2)。维度为1时没有限制,因为维度1(在任何维度中)都是多余的,并且不会影响数组的整体大小。按理说,数据类型越大或尺寸越大,您可以拥有的尺寸就越少。但是,我发现任何一个(也是唯一一个)维度可以是3,但不是4。
#include<iostream>
int main()
{
char a[2][2][2][2][2][2][2][2][2][2][2][2][2][2][2][2][2][2][2] = {0}; // ok
char b[2][2][2][2][2][2][2][2][2][2][2][2][2][2][2][2][2][2][2][2] = {0}; // fail!
static char c[2][2][2][2][2][2][2][2][2][2][2][2][2][2][2][2][2][2][2][2][2][2][2][2][2][2][2][2][2][2] = {0}; // ok
static char d[2][2][2][2][2][2][2][2][2][2][2][2][2][2][2][2][2][2][2][2][2][2][2][2][2][2][2][2][2][2][2] = {0}; // fail!
}
答案 2 :(得分:-4)
编写数组时唯一的限制是计算机的内存容量。