美文网首页
iOS swap 操作的三种写法

iOS swap 操作的三种写法

作者: 爱吃萝卜的小蘑菇 | 来源:发表于2018-12-13 11:51 被阅读41次
    要点:传递地址,操作指针

    方法一:

    - (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
    

    相关文章

      网友评论

          本文标题:iOS swap 操作的三种写法

          本文链接:https://www.haomeiwen.com/subject/tquvhqtx.html