美文网首页
struct和对象的区别

struct和对象的区别

作者: 就算我心狂野 | 来源:发表于2017-12-13 11:16 被阅读21次

关于struct和对象之间的区别是什么?


首先看一下代码:

    //定义一个结构体
    struct person {
          char *name;
          int age;
    };
    // 结构体创建和赋值
    struct person p = {.name = "boy", .age = 1};
    struct person p1 = p;
    p1.name = "girl";
    p1.age = 2;
    
    printf("p name = %s  p age = %d", p.name, p.age);
    printf("p1 name = %s  p1 age = %d", p1.name, p1.age);
    
    //对象创建和赋值
    Person *p2 = [[Person alloc] init];
    p2.name = @"小明";
    p2.age = 3;
    
    Person *p3 = p2;
    p3.name = @"小红";
    p3.age = 4;
    
    NSLog(@"p2 = %@", p2.name);
    NSLog(@"p3 = %@", p3.name);

打印结构如下:


image.png

创建出来结构体p,赋值给结构体p1,修改p1的值并不会影响到结构体p。
创建出来的对象p2,赋值给对象p3,修改p3的值时p2会跟着p3一起改变。

结构体使用的是copy,而对象使用的是引用。

创建结构体p1的时候是从p的内存地址拷贝了一份到新的内存空间。
创建对象p3的时候,将p3的指针指向了P2的地址。

所以结构体的值是不会跟随改变,而对象的值是会跟随着改变的。


本文只是为了交流和学习,如果有问题欢迎评论指出和交流。

相关文章

网友评论

      本文标题:struct和对象的区别

      本文链接:https://www.haomeiwen.com/subject/jeraixtx.html