是否可以通过将此变量传递给某个函数参数来递增变量的值,以便变量的值可以更改,例如:
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的值更新。得到它?
答案 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库的一部分。