尝试在C中作为参数传递二维数组

时间:2013-09-20 17:25:51

标签: c

当我尝试将二维数组作为参数传递给C时,

void PrintTriangle(int *triangle)

这对我不起作用?

3 个答案:

答案 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)什么是numbersNumbers是其第一个元素的地址(不详细说明);
3)什么是first element of numbers?(在这种情况下,它是array of 4 integers
4)所以我想要的函数形式参数是pointer to answer from step 3

int  (*pointer)[4]

它可能很慢并且看起来不专业,但你可以在你能想到的每个维度的数组上提出相同的问题。当你没有传递整个数组而是传递一个子阵列时,自己也会有用。

希望它能帮助你,因为它帮助了我。