关于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);
打印结构如下:

创建出来结构体p,赋值给结构体p1,修改p1的值并不会影响到结构体p。
创建出来的对象p2,赋值给对象p3,修改p3的值时p2会跟着p3一起改变。
结构体使用的是copy,而对象使用的是引用。
创建结构体p1的时候是从p的内存地址拷贝了一份到新的内存空间。
创建对象p3的时候,将p3的指针指向了P2的地址。
所以结构体的值是不会跟随改变,而对象的值是会跟随着改变的。
本文只是为了交流和学习,如果有问题欢迎评论指出和交流。
网友评论