引用类型包括结构,数组和映射,变量的存储有三种类型,memory,storage和calldata。
memory(值传递) 即数据在内存中,因此数据仅在其生命周期内(函数调用期间)有效。不能用于外部调用。
storage(指针传递) 状态变量保存的位置,只要合约存在就一直存储。
calldata 用来保存函数参数的特殊数据位置,是一个只读位置。是不可修改的、非持久的函数参数存储区域,效果大多类似memory。是外部函数的参数所必需指定的位置,但也可以用于其他变量。
局部变量/状态变量 默认是storage
函数参数,包括返回的参数,默认是memory
函数默认为public类型,但是当我们的函数参数如果为storage类型时,函数的类型必须为internal或者private
|