当我试图在 C 中将二维数组作为参数传递时,
void PrintTriangle(int *triangle)
它对我不起作用,为什么?
传递多维数组作为参数时必须指定最外层数组的维度
像这样的东西: -
void PrintTriangle(int pascalTriangle[][5]);
像这样调用PrintTriangle(pascalTriangle);
是错误的,因为您的函数PrintTriangle()
需要一个指向整数的指针。
以下是我记忆将多维数组作为参数传递的方法。这可能有点幼稚,但对我有用。
假设您定义了一个数组
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]
它可能很慢并且看起来不专业,但是您可以在您能想到的每个维度的数组上提出相同的问题。当不传递整个数组而是传递子数组之一时,问问自己也很有用。
希望它能帮助你,因为它帮助了我。
将您的函数称为
PrintTriangle(pascalTriangle);
是错的。因为PrintTriangle()
期望一个指向整数的指针作为它的参数并且pascalTriangle
(在衰减之后)是类型int(*)[5]
。此外,您必须在 array中传递行数和列数(作为参数)pascalTriangle
。这个函数的原型应该是
void PrintTriangle(int row, int col, int *triangle);
并且可能会调用它
PrintTriangle(5, 5, &pascalTriangle[0][0]);