要点:传递地址,操作指针
方法一:
- (void)viewDidLoad {
[super viewDidLoad];
int a = 10;
int b = 20;
[self swapA:&a B:&b];
NSLog(@"外部:a:%d b:%d",a,b);
// Do any additional setup after loading the view, typically from a nib.
}
-(void)swapA:(int *)a B:(int *)b{
int temp = *a;
*a = *b;
*b = temp;
NSLog(@"内部:a:%d b:%d",*a,*b);
}
内部:a:20 b:10
外部:a:20 b:10
方法二:调用方法和控制台打印同方法一
-(void)swapA:(int *)a B:(int *)b{
*b = *a ^ *b;
*a = *a ^ *b;
*b = *a ^ *b;
NSLog(@"内部:a:%d b:%d",*a,*b);
}
方法三:调用方法和控制台打印同方法一
-(void)swapA:(int *)a B:(int *)b{
*a = *a + *b;
*b = *a - *b;
*a = *a - *b;
NSLog(@"内部:a:%d b:%d",*a,*b);
}
错误案例:
- (void)viewDidLoad {
[super viewDidLoad];
int a = 10;
int b = 20;
[self swapA:&a B:&b];
NSLog(@"外部:a:%d b:%d",a,b);
// Do any additional setup after loading the view, typically from a nib.
}
-(void)swapA:(int *)a B:(int *)b{
int *temp = a;
a = b;
b = temp;
NSLog(@"内部:a:%d b:%d",*a,*b);
}
内部:a:20 b:10
外部:a:10 b:20
- (void)viewDidLoad {
[super viewDidLoad];
int a = 10;
int b = 20;
[self swapA:a B:b];
NSLog(@"外部:a:%d b:%d",a,b);
// Do any additional setup after loading the view, typically from a nib.
}
-(void)swapA:(int)a B:(int)b{
int temp = a;
a = b;
b = temp;
NSLog(@"内部:a:%d b:%d",a,b);
}
内部:a:20 b:10
外部:a:10 b:20
网友评论