如何将3D数组作为参数传递给C++?还需要将全局变量传递给函数吗?

use*_*079 5 c++ arrays function

所以我有几个问题.首先,我如何将3D数组传递给函数.我需要传递整个数组,因为函数是运行循环以将数组的内容输出到文件.这就是我现在拥有的

int array[5][3][3]
void function(int a[5][3][3])
{
//...
}
void function(array); //or void function(array[5][3][3]);
Run Code Online (Sandbox Code Playgroud)

我找到了一种方法,使用指向数组的指针使其工作,但是我问过我的老师,他不希望我们使用指针.

我的第二个问题是,如果我打算修改函数内的全局变量,我不需要将它传递给函数吗?我可以在函数内部使用它,就像我在main里面一样?

我现在遇到的另一个问题是将数组中的单个值传递给函数.

在循环中,我需要从数组[i] [j] [2]中提取一个值(i和j是外部和内部循环的索引)并将其传递给函数以评估它是否大于90这是为了学校作业,所以要了解我必须满足的某些规范.(就像不使用指针,传递整个数组,并从数组中传递一个值,因为作为一个类,我们还没有学会如何使用指针)

joh*_*ohn 9

你的代码是正确的,但实际上在C++(或C语言)中没有数组参数.无声地,编译器会将您的代码转换为等效的指针类型,即

int array[5][3][3];

void function(int (*a)[3][3])
{
    ...
}
Run Code Online (Sandbox Code Playgroud)

因此,虽然你的教授告诉你不要使用指针,但实际上你无法避免它们,因为C++中确实没有数组类型参数这样的东西.

第二个问题,全局变量的唯一要点是你可以在任何地方引用它们,所以不需要将它们作为参数传递.


Ben*_*son 5

为了传递复杂的数组,我更喜欢将它们包装在一个结构中:

struct array {
    int a[5][3][3];
};

void function(struct array *a) ...
Run Code Online (Sandbox Code Playgroud)

这避免了尝试将数组作为函数参数传递的许多陷阱。