gpt4 book ai didi

swift - 为什么内存地址不会因不同的结构实例而改变?

转载 作者:行者123 更新时间:2023-11-28 10:03:14 25 4
gpt4 key购买 nike

因为 structsSwift 中是值类型,所以它们的内存当然是分配在上的。

我的问题是,当 struct 的不同实例分配给同一个变量时,为什么内存地址没有改变。

解释:

对于下面的struct

struct Person {
var name: String

init(_ name: String) {
self.name = name
}
}

如果我创建 Person 的实例,例如,

var p = Person("John")
withUnsafePointer(to: &p) {
print("\(p) has address: \($0)") //0x000000010dcea3c0
}
p = Person("Jennifer")
withUnsafePointer(to: &p) {
print("\(p) has address: \($0)") //0x000000010dcea3c0
}
p = Person("Lisa")
withUnsafePointer(to: &p) {
print("\(p) has address: \($0)") //0x000000010dcea3c0
}

为什么每次都打印同一个地址?

最佳答案

这是因为您使用的是相同的变量。举个例子

var p(这是分配内存来保存你的值)

现在您只是更改值而不是已经分配给内存位置的变量。

关于swift - 为什么内存地址不会因不同的结构实例而改变?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57529164/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com