solidity数据存储位置以及存储报错

solidity 数据存储位置

solidity文档在0.5.0之后发生大变动,复杂的数据类型必须给出明确的数据存储位置:memorystoragecalldate

三个存储位置的区别

  1. storage 存储
  • 永久存储,写在区块链上,需要花费gas,使用的存储空间越大花费的gas越多。
  1. memory 内存
  • 仅在函数执行期间存储,函数执行结束后删除数据,花费gas少于storage。
  1. calldate 调用数据
  • 外部函数的参数需要calldata,但也可用于其他变量。是一个不可修改的,非持久性的区域,用于存储函数参数。

默认存储位置

  • 状态变量默认storage
  • 内部函数参数默认memory
  • 外部函数参数默认calldata

报错

string public s;
    
    function setStrings(string _s) public {
        s = _s;
    }

  • string 类型在作为参数必须加memory,因为string默认是storage

posted @ 2022-11-05 17:48  伶俐虫虫  阅读(147)  评论(0)    收藏  举报