我尝试使用 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);
顺便说一句,您当前的代码不起作用的原因是
x(j)
语法是虚构的:)- 在循环内声明的变量是该 block 的内部变量。这意味着您无法在循环体之后访问它们。
关于c++ - 在 C++ 中使用 for 循环初始化一系列数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5773108/