您可以直接使用相同的多级指针类型传递它,其中指针只是按值传递。但是,您还必须传递数组维度的大小,因为基本数组不会在内部存储该信息。否则,在函数内部,你无法知道数组有多大。 std::size_t
是表示数据结构大小的最佳类型。
void function_2(int ***array, std::size_t pages, std::size_t cols, std::size_t rows)
{
//do something with array
}
void function_1(int ***array, std::size_t pages, std::size_t cols, std::size_t rows)
{
function_2(array, pages, cols, rows);
}
但是,您不应该这样做。除非你绝对必须使用原始数组,然后不要。改为使用std::vector
。它在内部存储大小,所以您不必传递多个参数。 vector
也提供各种其他改进和安全检查。它是C++中原始数组的标准替代品。
下面是如何使用INTS的三维矢量:
void function_2
(std::vector< std::vector< std::vector<int> > > &myVector) // pass by reference
{
/* do stuff */
}
void function_1
(std::vector< std::vector< std::vector<int> > > &myVector) // pass by reference
{
function_2(myVector);
}
int main()
{
std::size_t pages = /* num */;
std::size_t cols = /* num */;
std::size_t rows = /* num */;
std::vector< std::vector< std::vector<int> > > myVector
(pages, std::vector< std::vector<int> >(cols, std::vector<int>(rows, 0)));
function_2(myVector);
function_1(myVector);
}
你确定你需要一个'int ***'吗?另外,在C++中,通常应该使用'std :: vector'或'std:array'来代替原始数组。简单得多。 – crashmstr
int *作为C++中的数组没有用处。 – SergeyA
int ***与本地数组不相同。 –