这里说一下 solidity
的引用类型。
存储位置
storage
「区块链中,具备永久性」- 状态变量
- 复杂类型的局部变量
memory
「EVM 内存」- 局部变量及参数
storage
1 | contract A{ |
上面的 a
都存储在 storage
中。
memory
1 | contract A{ |
a
,b
放在 memory
中。
规则
- 在
memory
和storage
之间总是会创建一个完全独立的拷贝 - 状态变量相互赋值总是会创建一个完全独立的拷贝
- 同样位置的数据存储之间赋值只是引用传递
1 | pragma solidity ^0.4.18; |