// // 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; }