美文网首页solidity
solidity 中的memory 和storage,局部变量和

solidity 中的memory 和storage,局部变量和

作者: 记忆_0d09 | 来源:发表于2018-12-05 16:15 被阅读9次

    状态变量和局部变量:

    1,在合约中定义的变量为状态变量,在方法中定义的变量为局部变量;

    2,状态变量都是存储在区块链中的,局部变量都是存在内存中的,局部变量出了作用域就等待被回收。

    memory和storage:

    1,在合约中声明的变量默认是storage的

    2,方法参数中的变量默认是memory的,方法中定义的变量默认是临时storage的(其实只是storage的引用且只能是复杂类型的数据(如 string,array和struct)),方法中定义的值类型变量默认是memor的 。

    例如:

    contract MemeryAndStorage{

        struct Anime{

            string name;

            uint age;

        }

        Anime public an = Anime("da bai",2);

        function anmi(){

            modifyAn(an);

        }

        function modifyAn(Animer storage _an) private {

            Animer bn = _an;

        }

    }

    上面 bn 就是一个storage的引用,指向an.如果方法参数是storage的那么该方法一定要是private的修饰的。不然会报错

    memory->memory 是值copy一份。

    memory->storage 是将memory的值copy一份存到storage中。

    storage->storage 是引用copy一份,然后都指向同一个storage值。

    storage->memory是值copy一份到memory

    相关文章

      网友评论

        本文标题:solidity 中的memory 和storage,局部变量和

        本文链接:https://www.haomeiwen.com/subject/nosicqtx.html