【发布时间】:2014-04-09 22:06:57
【问题描述】:
我在使用 C++ 中的 3D 数组指针时遇到了一些困难。我有一个Q[3][N][N] 数组,我想将其传递给一个函数以打印[0][i][j] 位置的值(以及[1][i][j] 和[2][i][j]). 如何实现这一点?使用起来会更方便吗? Q[i][j][0] 等等?
对于 2D,当我将 &Q[0][0] 提供给 *var 时,以下代码可以正常工作:
template <typename T>
void print2d(T *var, int I, int J){
cout << endl;
for (int j = 0; j < J; j++){
for (int i = 0; i < I; i++){
cout << setprecision(3) << setw(12) << *(var + (N*i + j));
}
cout << endl;
}
cout << endl;
}
我正在使用相同的方法为 3D 编写类似的函数,但它不会写出正确的值:
谁能让我知道指向Q[i][j][1] 正确地址的正确方法。在输入参数中,我给出了 Q[0][0][0] 的地址。如果我想写出特定的 k 值,我应该使用不同的地址(例如 Q[i][j][1])吗?
template <typename T>
void print3d(T *var, int I, int J, int K){
cout << endl;
for (int j = 0; j < J; j++){
for (int i = 0; i < I; i++){
cout << setprecision(3) << setw(12) << *(var + I*J*i + I*j + K);
}
cout << endl;
}
cout << endl;
}
【问题讨论】:
-
“困难”究竟是什么?我们无法帮助解决没有信息的问题。
-
我想为特定的 i(或 k)写 Q[i][j][k]。
-
N编译时间是否固定? -
是的,我已将 N 设置为全局变量,因为它在整个程序中都不会改变。
-
@pranav 全局变量?它需要是一个完整的时间常数。即使你不改变它,变量也不会起作用。
标签: c++ pointers multidimensional-array