码迷,mamicode.com
首页 > 其他好文 > 详细

使用例子告诉你oc指针参数

时间:2015-06-30 12:41:10      阅读:151      评论:0      收藏:0      [点我收藏+]

标签:

先写一个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

使用例子告诉你oc指针参数

标签:

原文地址:http://www.cnblogs.com/greenboy/p/4609851.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!