将对象数组传递给Objective C中的函数 - 并返回一个对象

时间:2012-11-17 14:55:23

标签: c arrays function pointers

道歉,如果这是一个愚蠢的问题,但我是新手,无法在任何地方找到答案。我已经声明了一个包含五个对象(Fraction对象)的数组,如下所示:

Fraction *fractArray[5];

我现在想将这个数组(或者至少指向它的数组)传递给C风格的函数,该函数将对数组中的分数执行各种操作并返回单个分数。在声明一个指向数组的指针(称之为* fractPointer)后,我试图建立一个类似的函数:

Fraction* arraySum (Fraction *fractPointer, int arraySize)
{
    // dostuff , then return a fraction as the result
}

...并传递预定义的指针和数组大小。我通过调试建立了fractPointer成功指向第一个数组元素。指针最初也指向函数中的正确位置。但我似乎无法将指针增加到数组中的下一个对象。当我执行fractPointer++;时,它会不断抛出错误(在函数中声明新的分数指针时也是如此)。抱怨的是我正在对指向Fraction的指针进行算术运算,而指数不是一个常数。我是不是错了?

2 个答案:

答案 0 :(得分:2)

传递给函数时,数组会衰减为指针。所以你需要声明你的函数:

Fraction *arraySum (Fraction **fractPointer, int arraySize);

Fraction *arraySum (Fraction *fractPointer[], int arraySize);

为了让它发挥作用。

答案 1 :(得分:-1)

请注意您如何声明数组:Fraction *fractArray[5]。另一种写作方式是Fraction **fractArray。一组指针。因此,要将该数组传递给另一个函数,您需要使用相同的类型 - Fraction**Fraction *foo[]

这与“腐朽”无关 - 它与你从你的例子中删除一个间接级别完全一样。即int intArray[5]无法传递给带参数int的函数 - 函数需要占用整个int array[]

相关问题