增加函数参数

时间:2016-04-05 11:12:47

标签: ios objective-c

是否可以通过将此变量传递给某个函数参数来递增变量的值,以便变量的值可以更改,例如:

int y=0; 
void someFunc(int a); 
somefunc(y+50); 
NSLog(@"y=@f",y); 
prints "y = 50"

你可以这样做

someFunc(y=y+50);
someFunc(y=+50);

但是有更优雅的方式来实现这一点,使用指针可能吗? e.g

someFunc(*y+50);

这是我想要完成此代码的代码片段

-(void)drawRect:(CGRect)rect
{
    CGFloat currentX = 0;
    CGFloat currentY = height / 2;

    CGContextRef ctx = UIGraphicsGetCurrentContext();
    CGContextSetLineWidth(ctx, 5);
    CGContextSetStrokeColorWithColor(ctx, [UIColor blackColor].CGColor);
    CGContextSetFillColorWithColor(ctx, [UIColor redColor].CGColor);

    CGContextMoveToPoint(ctx,currentX, currentY);
    CGContextAddLineToPoint(ctx, currentX=currentX+50, currentY - 200);
    CGContextAddLineToPoint(ctx, currentX=+50, currentY - 200);
    CGContextAddLineToPoint(ctx, currentX=+50, currentY - 200);
    CGContextAddLineToPoint(ctx, currentX=+50, currentY - 200);

    CGContextDrawPath(ctx, kCGPathStroke);  
}

我希望每次在函数参数中递增时,都要保持currentX的值更新。得到它?

2 个答案:

答案 0 :(得分:0)

您可以通过传递指向变量的指针来完成此操作。这被称为" out参数"或者"通过引用和#34;:

进行调用
void someFunc( int * a, int o )
{
  …
  *a = *a + o;
}

int y = 0;
someFunc( &y, 50 );
// y is y+o

答案 1 :(得分:0)

您需要在调用函数之前更改该值,在这种情况下您可以:

x = x + something;
func(x);

或者如果你需要在调用函数后更改值,你会这样做:

func(x);
x = x + something;

常识。

注意: 从不在参数列表中编写func(x=something)之类的代码。因为如果您习惯这样做,您很快就会编写评估顺序错误,例如func(x, x=something) // BAD, unspecified behavior

或者,如果您需要更改 函数中的值,您可以传递其地址:

void func (int* param)
{
  *param = something;
}
...
func(&x);

但是,如果函数是由您编写的,那么您只能这样做。这似乎不是这种情况,因为这些功能显然是某些Apple库的一部分。