1

当我试图在 C 中将二维数组作为参数传递时,

void PrintTriangle(int *triangle)

它对我不起作用,为什么?

4

3 回答 3

1

传递多维数组作为参数时必须指定最外层数组的维度

像这样的东西: -

void PrintTriangle(int pascalTriangle[][5]);

像这样调用PrintTriangle(pascalTriangle);是错误的,因为您的函数PrintTriangle()需要一个指向整数的指针。

于 2013-09-20T17:29:55.870 回答
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]

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

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

于 2013-09-20T17:58:57.760 回答
1

将您的函数称为

 PrintTriangle(pascalTriangle); 

是错的。因为PrintTriangle()期望一个指向整数的指针作为它的参数并且pascalTriangle(在衰减之后)是类型int(*)[5]。此外,您必须在 array中传递行数和列数(作为参数)pascalTriangle。这个函数的原型应该是

void PrintTriangle(int row, int col, int *triangle);

并且可能会调用它

PrintTriangle(5, 5, &pascalTriangle[0][0]); 
于 2013-09-20T17:32:58.727 回答