#import <Foundation/Foundation.h> @interface Person : NSObject { @public int age; double height; } - (void)print; @end
void test1(int newAge, double newHeight); void test2(Person *newP); void test3(Person *newP); void test4(Person *newP);
int main() { Person *p = [Person new]; p->age = 10; p->height = 1.5f;
test1(p->age, p->height); [p print];
test2(p); [p print];
test3(p); [p print];
test4(p); [p print];
return 0; }
@implementation Person - (void)print { NSLog(@"年龄=%d,身高=%f", age, height); } @end
void test1(int newAge, double newHeight) { newAge = 10; newHeight = 1.6; }
void test2(Person *newP) { newP->age = 20; newP->height = 1.7; }
void test3(Person *newP) { Person *p2 = [Person new]; p2->age = 40; p2->height = 1.8; newP = p2;
newP->age = 30; }
void test4(Person *newP) { Person *p2 = newP; p2->age = 50; p2->height = 1.9; newP->age = 60; } 输出结果: 年龄=10,身高=1.5 执行test1函数,而成员变量未发生变化 年龄=20,身高=1.7 执行test2函数,传递的是指针,成员变量发生变化 年龄=20,身高=1.7 执行test3函数,newp=p,newp=p2,p所指向的对象未发生变化,newp所指对象发生变化 年龄=60,身高=1.9 执行test4函数,p2=p,p2所指对象成员变量发生改变,则p所指对象成员变量发生变化
|