您可以直接使用相同的多級指針類型傳遞它,其中指針只是按值傳遞。但是,您還必須傳遞數組維度的大小,因爲基本數組不會在內部存儲該信息。否則,在函數內部,你無法知道數組有多大。 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 ***與本地數組不相同。 –