菜鸟之路-09
2015-11-02 08:45
204 查看
#import <Foundation/Foundation.h>
@interface Person :
NSObject{
@public
NSString *_name;
int _age;
}
@end
@implementation Person
@end
@interface Dog : NSObject{
@public
NSString *_color;
}
-(Person *)lab;
@end
@implementation Dog
//-(类名 *)方法名:参数列表
-(Person *)lab{
Person *p=[Person
new];
p->_name=@"黄瓜";
p->_age =
16;
return p;
}
@end
int main(int argc,
const char * argv[]) {
@autoreleasepool {
Dog *d =[Dog
new];//只要是new就开辟了新的堆内存空间
Person *p1= [d
lab];//只要是new就开辟了新的堆内存空间
此处调用了Person new
NSLog(@"姓名:%@
年龄:%d",p1->_name,p1->_age);
Person *p2=[d
lab];//只要是new就开辟了新的堆内存空间
此处调用了Person new
p2->_age=19;
//改变了p2所指的堆空间里面的成员变量,因为这个是引用传递,所以相应的堆空间里面的成员变量也会改变。
p2->_name =@"黄豆";
NSLog(@"姓名:%@
年龄:%d",p2->_name,p2->_age);
Person *p3 =[d lab];
Person *p4 =p3;
NSLog(@"姓名:%@
年龄:%d",p4->_name,p4->_age);
p3->_name =
@"黄毛";
p3->_age =17;
//为什么这里改变了p3所指的成员变量的值,p4的成员变量值夜改变了,因为p3
和p4所指的堆空间是相同的,无论修改p3 p4他们的值都会发生改变。
NSLog(@"姓名:%@
年龄:%d",p4->_name,p4->_age);
}
return 0;
}
@interface Person :
NSObject{
@public
NSString *_name;
int _age;
}
@end
@implementation Person
@end
@interface Dog : NSObject{
@public
NSString *_color;
}
-(Person *)lab;
@end
@implementation Dog
//-(类名 *)方法名:参数列表
-(Person *)lab{
Person *p=[Person
new];
p->_name=@"黄瓜";
p->_age =
16;
return p;
}
@end
int main(int argc,
const char * argv[]) {
@autoreleasepool {
Dog *d =[Dog
new];//只要是new就开辟了新的堆内存空间
Person *p1= [d
lab];//只要是new就开辟了新的堆内存空间
此处调用了Person new
NSLog(@"姓名:%@
年龄:%d",p1->_name,p1->_age);
Person *p2=[d
lab];//只要是new就开辟了新的堆内存空间
此处调用了Person new
p2->_age=19;
//改变了p2所指的堆空间里面的成员变量,因为这个是引用传递,所以相应的堆空间里面的成员变量也会改变。
p2->_name =@"黄豆";
NSLog(@"姓名:%@
年龄:%d",p2->_name,p2->_age);
Person *p3 =[d lab];
Person *p4 =p3;
NSLog(@"姓名:%@
年龄:%d",p4->_name,p4->_age);
p3->_name =
@"黄毛";
p3->_age =17;
//为什么这里改变了p3所指的成员变量的值,p4的成员变量值夜改变了,因为p3
和p4所指的堆空间是相同的,无论修改p3 p4他们的值都会发生改变。
NSLog(@"姓名:%@
年龄:%d",p4->_name,p4->_age);
}
return 0;
}
相关文章推荐
- string 与char* char[]之间的转换
- 两个链表的第一个公共结点
- hibernate注解
- SqlServer 2015修改表时出现“save changes is not permitted…”的解决方法
- ppm内存溢出问题解决
- 开发 Spring Redis 应用程序
- UML-状态图、活动图和交互图
- 机器学习实战笔记之一(调试NumPy)
- should not include d3dtypes.h when compiling for DX8 or newer interfaces
- mysql 优化 一些简单实用的原则
- 适合初学者理解的A*(A星)算法(转)
- 下拉菜单 spinner ,popupwindow, 自定义popupwindow总结
- Java编码问题
- Modbus总结
- Single Number
- Object-C系列<Xcode中ARC 下两种释放对象的方法>
- OC利用delegate实现霓虹灯效果
- Win10官方大补要跳票:内测用户多试用一段时间
- final和super的用法
- iOS应用内支付(IAP)的那些坑