oc基础复习03-OC的类02参数

先写一个Person类 Person.h

 1 #import <Foundation/Foundation.h>
 2 
 3 @interface Person : NSObject
 4 {
 5 @public
 6     int age;
 7     double height;
 8 }
 9 - (void)print;
10 
11 @end

Person.m

1 #import "Person.h"
2 
3 @implementation Person
4 - (void)print
5 {
6     NSLog(@"年龄=%d,身高=%f", age, height);
7 }
8 @end

main.m

 1 #import <Foundation/Foundation.h>
 2 #import "Person.h"
 3 void test1(int newAge, double newHeight);
 4 void test2(Person *newP);
 5 void test3(Person *newP);
 6 void test4(Person *newP);
 7 
 8 int main(int argc, const char * argv[]) {
 9     @autoreleasepool {
10         Person *p = [Person new];
11         p->age = 10;
12         p->height = 1.5f;
13         
14         test1(p->age, p->height);
15         [p print]; //10  1.5
16         
17         test2(p);// 20 1.7
18         [p print];
19         NSLog(@"before = aft%@",p);
20         test3(p);//20 1.7
21         [p print];
22         NSLog(@"after = %@",p);
23         
24         test4(p);//60 1.9
25         [p print];
26         
27     }
28     return 0;
29 }
30 
31 void test1(int newAge, double newHeight)
32 {
33     newAge = 10;
34     newHeight = 1.6;
35 }
36 
37 void test2(Person *newP)
38 {
39     newP->age = 20;
40     newP->height = 1.7;
41 }
42 
43 void test3(Person *newP)
44 {
45     NSLog(@"刚传入参数地址newP = %@", newP);
46     Person *p2 = [Person new];//p2指向一个新的存储空间
47     p2->age = 40;
48     p2->height = 1.8;
49     newP = p2;//将p2的新的储存空间指向newP 这里更改只是更改p2里面的内容 而不会对newP 原来指向的地址进行更改
50     NSLog(@"newP 更改后的地址= %@", newP);
51     newP->age = 30;
52 }
53 
54 void test4(Person *newP)
55 {
56     Person *p2 = newP; //将newp的地址赋值给p2 然后进行更改p2的内容 其实就相当于更改newP里面的内容
57     p2->age = 50;
58     p2->height = 1.9;
59     newP->age = 60;
60 }

运行结果:

2015-06-30 11:11:43.933 test[40776:1124334] 年龄=10,身高=1.500000

2015-06-30 11:11:43.934 test[40776:1124334] 年龄=20,身高=1.700000

2015-06-30 11:11:43.934 test[40776:1124334] before = aft<Person: 0x100211ba0>

2015-06-30 11:11:43.935 test[40776:1124334] 刚传入参数地址newP = <Person: 0x100211ba0>

2015-06-30 11:11:43.935 test[40776:1124334] newP 更改后的地址= <Person: 0x100100330>

2015-06-30 11:11:43.935 test[40776:1124334] 年龄=20,身高=1.700000

2015-06-30 11:11:43.935 test[40776:1124334] after = <Person: 0x100211ba0>

2015-06-30 11:11:43.935 test[40776:1124334] 年龄=60,身高=1.900000

转载于:https://www.cnblogs.com/greenboy/p/4609851.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值