c++ - 在 C++ 中使用 for 循环初始化一系列数组

标签 c++ arrays multidimensional-array

我尝试使用 for 循环创建一系列多维数组。用户应输入要初始化的数组数。我想要这样的东西:

int i;
printf("Enter the number of arrays you want: ");
scanf("%d",i)
for(int j=0;j<i;j++){
     long double x(j)[size][size];
}

如果我输入 5,我想要 x0、x1、x2、x3 和 x4。

有可能吗??

感谢您的帮助。

最好的问候, 埃姆雷。

最佳答案

编辑:刚刚注意到您正在使用 C++。在这种情况下,std::vector 绝对是最方便的解决方案。如果您对如何使用普通数组、C 风格执行此操作感到好奇,请继续阅读……


你不能这样做。您需要做的是创建一个 3 维数组(或 2 维数组的数组,具体取决于您的观点...)

与 C 一样,内存分配很痛苦......您可以静态分配:

long double x[N][size][size];

(N 是在编译时确定的。确保你有足够大的。 此外,如果 N 确实很大,则静态声明数组(作为全局变量或使用 static 关键字)。如果你不这样做,你会得到一个堆栈溢出。)

或者你可以使用动态内存分配:

long double (*x)[size][size]; // x is a pointer to size by size arrays
x = malloc(n * sizeof(*x));
//You can now use x[j][a][b]...

也许 typedef 看起来更好(即使我不是 100% 确定我在最后一个例子中正确地声明了数组...):

typedef long double typename_here[size][size];
typename_here *x;
x = malloc(n * sizeof(typename_here);

顺便说一句,您当前的代码不起作用的原因是

  1. x(j) 语法是虚构的:)
  2. 在循环内声明的变量是该 block 的内部变量。这意味着您无法在循环体之后访问它们。

关于c++ - 在 C++ 中使用 for 循环初始化一系列数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5773108/

相关文章:

java - 在二维数组中获取空​​格分隔的行输入

c++ - 如何在 C++ 中初始化 3D 数组

c++ - 在构造函数中限制可变参数模板的可接受方式

c++ - 使用QT读取socket

c++ - Visual Studio 无法矢量化

arrays - 获取枚举数组的基数组

数组的 C++ vector

c++ - 如何从二维数组中获取行和列 C++

c++ - 多台机器执行失败

c# - LINQ to Entities 不支持 LINQ 表达式节点类型 'NewArrayBounds'