当我尝试将二维数组作为参数传递给C时,
void PrintTriangle(int *triangle)
这对我不起作用?
答案 0 :(得分:1)
将多维数组作为参数传递时,必须指定最外层数组的维度
这样的事情: -
void PrintTriangle(int pascalTriangle[][5]);
这样调用PrintTriangle(pascalTriangle);
是错误的,因为函数PrintTriangle()
期望指向整数的指针。
答案 1 :(得分:1)
将您的功能称为
PrintTriangle(pascalTriangle);
错了。因为PrintTriangle()
期望指向整数的指针作为其参数而pascalTriangle
(在衰减之后)的类型为int(*)[5]
。您还必须pass the number of rows and columns (as arguments)在数组pascalTriangle
中。该功能的原型应该是
void PrintTriangle(int row, int col, int *triangle);
并且可能是
PrintTriangle(5, 5, &pascalTriangle[0][0]);
答案 2 :(得分:1)
以下是我记忆传递多维数组作为参数的方法。这可能有些幼稚,但对我有用 假设您已定义数组
int numbers[3][4];
并且您希望将其传递给函数
为了正确地做到这一点,我回答了一系列问题:
1)我想传递给什么功能?一个数组。(在这种情况下是numbers
)
2)什么是numbers
? Numbers
是其第一个元素的地址(不详细说明);
3)什么是first element of numbers
?(在这种情况下,它是array of 4 integers
)
4)所以我想要的函数形式参数是pointer to answer from step 3
:
int (*pointer)[4]
它可能很慢并且看起来不专业,但你可以在你能想到的每个维度的数组上提出相同的问题。当你没有传递整个数组而是传递一个子阵列时,自己也会有用。
希望它能帮助你,因为它帮助了我。