iOS将输出float参数传递给函数

时间:2012-08-31 11:31:15

标签: iphone ios function parameters

我正在尝试创建一个函数来计算一组数字的平均值,最大值,最小值和标准差。

我希望它像UIColor函数一样工作 - (void)getRed:green:blue:alpha。即传递四个浮点值,然后函数覆盖它们。

我正在努力为它找到合适的语法。

我的功能是......

- (void)calculateStatsAverage:(float)average
            standardDeviation:(float)standardDeviation
                      minimum:(float)minimum
                      maximum:(float)maximum
{
    //pseudo code
    average = total / count;
    minimum = min value;
    etc...
    //
}

我遇到的问题是重新获得价值。

如果我将函数更改为使用float *(这是UIColor函数的作用),那么我的计算不喜欢分配变量。

简化......

想象一下这些功能。第一个是从其他地方打来的。

- (void)runThisFunction
{
    float someOutputValue = 0.0;

    [self changeTheValue:someOutputValue];

    NSLog(@"The value is %f", someOutputValue);
}

- (void)changeTheValue:(float)value
{
    value = 10.0;
}

我希望这段代码输出“值为10.0”;但是现在我得到“价值是0.0”。

请告诉我如何编写这两个功能。从那里我将能够解决剩下的问题。

由于

2 个答案:

答案 0 :(得分:2)

- (void)passByRefMethod:(float *)ptr
{
    *ptr = MYVALUE;
}

抱歉格式化,在手机上输入。希望这有帮助!

这种技术通常被称为传递参考,它是C的一部分,因此您可以使用它来搜索更多信息。

答案 1 :(得分:0)

您的NSLog正在显示局部变量'someOutputValue'的值,该变量已被指定为0.0。

您的'changeTheValue'方法无效。

以下代码可能有所帮助,

- (void)runThisFunction
{
    float someOutputValue = 0.0;

    float resultOfCalc = [self calcTheValue:someOutputValue];

    NSLog(@"The value is %f", resultOfCalc);
}

- (float) changeTheValue:(float)value // note that this method returns a float
{
    float newValue;

    // do whatever calc is appropriate, e.g.

    newValue = value + 10.0;

    return newValue;  // pass back the result of calc
}

这将输出,

The value is 10.