//
// main.m
// 7.27、练习 指向对象的指针相互赋值的内存是如何表现的
#import <Foundation/Foundation.h>
@interface Person : NSObject
{
@public
int _height;
int _age;
}
- (void)show;
@end
@implementation Person
- (void)show{
NSLog(@"身高是%i,年龄是%i",_height,_age);
}
@end
void test1(int mHeight,int mAge){
mHeight=180;
mAge=25;
}
void test2(Person *p){
p->_height=180;
p->_age=25;
}
void test3(Person *p){
Person *newp=[Person new];
newp=p; // 把P赋给newp就是改变newP的指向,使newp也指向
newp->_height=190;
newp->_age=40;
}
void test4(Person *p){
Person *newp=[Person new];
p=newp; //这样就会使p指向newp所指向的对象
p->_height=200;
p->_age=50;
}
int main(int argc, const char * argv[]) {
// 创建Person对象
Person *p=[Person new];
// 初始化对象
p->_height=175;
p->_age=30;
test1(p->_height, p->_age); // 这样调用函数并不会改变对象成员变量的值
test2(p); //会改变值
test3(p); //会改变值
test4(p); // 不会改变值
[p show];
return 0;
}