0

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

我希望它像 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”。

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

谢谢

4

2 回答 2

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

抱歉格式化,手机输入。希望这可以帮助!

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

于 2012-08-31T11:37:35.753 回答
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.
于 2012-08-31T11:42:02.760 回答