# 值类型与引用类型的区别

URL: https://caijiao.org/swift/06-enums-structs/04-value-reference
Source: docs/swift/06-enums-structs/04-value-reference.md
Description: 本章讲解 Swift 中值类型与引用类型的区别，帮助开发者理解内存管理和数据传递方式，写出更高效安全的代码。

Swift 中数据类型分为值类型和引用类型，二者在内存和赋值行为上有明显区别。

## 值类型（Value Types）

值类型在赋值或传参时，会复制数据本身，修改副本不影响原始值。结构体（struct）、枚举（enum）、基本数据类型（如 Int、String）都是值类型。

```swift
struct Point {
    var x: Int
    var y: Int
}

var p1 = Point(x: 0, y: 0)
var p2 = p1
p2.x = 10
print(p1.x)  // 输出 0，p1 不受影响
````

## 引用类型（Reference Types）

引用类型在赋值时，复制的是引用，多个变量指向同一实例，修改会影响所有引用。类（class）是引用类型。

```swift
class Person {
    var name: String
    init(name: String) {
        self.name = name
    }
}

var person1 = Person(name: "小明")
var person2 = person1
person2.name = "小红"
print(person1.name)  // 输出 小红，person1 被修改
```

理解两者区别有助于合理设计数据结构和避免潜在错误。
