这里说一下 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; |