• 指向指针的指针


    源代码:

    - (void)test {
    
        NSString *name = @"111";
        NSLog(@">>>>>>>>>name:%@", name);
        
        [self changeValue1:name];
        NSLog(@">>>>>>>>>name:%@", name);
        
        [self changeValue2:&name];
        NSLog(@">>>>>>>>>name:%@", name);
        
        NSInteger age = 10;
        NSLog(@">>>>>>>>>age:%ld", age);
        
        [self changeAge1:age];
        NSLog(@">>>>>>>>>age:%ld", age);
        
        [self changeAge2:&age];
        NSLog(@">>>>>>>>>age:%ld", age);
        
        NSInteger *p_age = &age;
        [self changeAge3:&p_age];
        NSLog(@">>>>>>>>>age:%ld", age);
    }
    
    - (void)changeValue1:(NSString *)name {
        name = @"222";
    }
    
    - (void)changeValue2:(NSString **)name {
        *name = @"333";
    }
    
    - (void)changeAge1:(NSInteger)age {
        age = 20;
    }
    
    - (void)changeAge2:(NSInteger *)age {
        *age = 30;
    }
    
    - (void)changeAge3:(NSInteger **)age {
        **age = 40;
    }

    打印结果为:

    2021-08-06 23:46:07.004362+0800 OCTestLine[15374:474778] >>>>>>>>>name:111
    2021-08-06 23:46:07.004422+0800 OCTestLine[15374:474778] >>>>>>>>>name:111
    2021-08-06 23:46:07.004487+0800 OCTestLine[15374:474778] >>>>>>>>>name:333
    2021-08-06 23:46:07.004533+0800 OCTestLine[15374:474778] >>>>>>>>>age:10
    2021-08-06 23:46:07.004569+0800 OCTestLine[15374:474778] >>>>>>>>>age:10
    2021-08-06 23:46:07.004602+0800 OCTestLine[15374:474778] >>>>>>>>>age:30
    2021-08-06 23:46:07.004633+0800 OCTestLine[15374:474778] >>>>>>>>>age:40
    Program ended with exit code: 0

    总结起来就是:

    - (void)test {
        
        int a = 10;
        [self changeValue1:a];
        NSLog(@">>>>>>>>>>%d", a);
        
        [self changeValue2:&a];
        NSLog(@">>>>>>>>>>%d", a);
        
        int b = 100;
        [self exchangeValue1:a :b];
        NSLog(@">>>>>>>>>>%d,%d", a, b);
        
        [self exchangeValue2:&a :&b];
        NSLog(@">>>>>>>>>>%d,%d", a, b);
        
        [self exchangeValue3:&a :&b];
        NSLog(@">>>>>>>>>>%d,%d", a, b);
    }
    
    // int num;
    // num = a;
    // num = 20;
    - (void)changeValue1:(int)num {
        num = 20;
    }
    
    // int *num;
    // num = &a;
    // *num = 30;
    - (void)changeValue2:(int *)num {
        *num = 30;
    }
    
    // int num1 = a;
    // int num2 = b;
    // int num;
    // num = num1;
    // num1 = num2;
    // num2 = num;
    - (void)exchangeValue1:(int)num1 :(int)num2 {
        int num;
        num = num1;
        num1 = num2;
        num2 = num;
    }
    
    // int *num1 = &a;
    // int *num2 = &b;
    // int *num;
    // num = num1;
    // num1 = num2;
    // num2 = num;
    - (void)exchangeValue2:(int *)num1 :(int *)num2 {
        int *num;
        num = num1;
        num1 = num2;
        num2 = num;
    }
    
    // int *num1 = &a;
    // int *num2 = &b;
    // int num;
    // num = *num1;
    // *num1 = *num2;
    // *num2 = *num;
    - (void)exchangeValue3:(int *)num1 :(int *)num2 {
        int num;
        num = *num1;
        *num1 = *num2;
        *num2 = num;
    }

    打印结果为:

    2021-08-06 23:42:26.266532+0800 OCTestLine[15333:472808] >>>>>>>>>>10
    2021-08-06 23:42:26.266593+0800 OCTestLine[15333:472808] >>>>>>>>>>30
    2021-08-06 23:42:26.266669+0800 OCTestLine[15333:472808] >>>>>>>>>>30,100
    2021-08-06 23:42:26.266703+0800 OCTestLine[15333:472808] >>>>>>>>>>30,100
    2021-08-06 23:42:26.266735+0800 OCTestLine[15333:472808] >>>>>>>>>>100,30
    Program ended with exit code: 0
  • 相关阅读:
    第一次项目总结
    8.16 CSS知识点7
    2016y9m22d 博文分享
    2016y9m8d
    2016y9m7d
    2016y9m6d
    2016y9m5d
    2016.9.2博文分享!
    2016y8m16d
    2016y8m15d
  • 原文地址:https://www.cnblogs.com/cchHers/p/15103546.html
Copyright © 2020-2023  润新知