菜鸟之路-09

来源:互联网 发布:手机屏幕亮度调节软件 编辑:程序博客网 时间:2024/06/07 18:50

#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=[Personnew];

      p->_name=@"黄瓜";

    p->_age =16;

   return p;

}


@end

int main(int argc,const char * argv[]) {

    @autoreleasepool {

        Dog *d =[Dognew];//只要是new就开辟了新的堆内存空间

        

     Person *p1= [dlab];//只要是new就开辟了新的堆内存空间 此处调用了Person new

       NSLog(@"姓名:%@ 年龄:%d",p1->_name,p1->_age);

        

        Person *p2=[dlab];//只要是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的成员变量值夜改变了,因为p3p4所指的堆空间是相同的,无论修改p3 p4他们的值都会发生改变。

       NSLog(@"姓名:%@ 年龄:%d",p4->_name,p4->_age);


        

    }

   return 0;

}


0 0
原创粉丝点击