智能合约实战 solidity 语法学习 07 [ memory storage ]

Posted www_vane

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了智能合约实战 solidity 语法学习 07 [ memory storage ]相关的知识,希望对你有一定的参考价值。

内存型(memory)

存放在内存中
被memory修饰的变量是直接拷⻉,值传递


存储型 (storage)

被storage修饰的变量是引⽤传递,修改⼀个,另外的同样被修改
引⽤类型的变量才可以显示的声明为 storage

局部变量,默认是storage类型
状态变量,默认是storage变量(合约开头定义的视为状态变量)

contract  HelloMemoryStorage {
    string public str = "abcd";
    uint public num = 100;
    
    function test1() public {
        test2(str);    
    }
    
    // 函数入参,默认是memory,也可以修改为storage
    function test2(string memory teststr) public {
        num = 200;
        bytes(teststr)[0] = "f";
    }
    
    function test3() public {
        test4(str);
    }
    
    // 尝试将入参改为storage
    function test4(string storage teststr) private {
        num = 300;
        bytes(teststr)[0] = "f";
    }
    
    // 局部变量默认是storage类型
    function test5() public {
        
        string storage tmp = str; 
        nu

以上是关于智能合约实战 solidity 语法学习 07 [ memory storage ]的主要内容,如果未能解决你的问题,请参考以下文章

智能合约实战 solidity 语法学习 10 [ BNB合约解读 ] 附代码

智能合约实战 solidity 语法学习 10 [ BNB合约解读 ] 附代码

智能合约实战 solidity 语法学习 10 [ BNB合约解读 ] 附代码

智能合约实战 solidity 语法学习 03 [ 数据类型 ]

智能合约实战 solidity 语法学习 09 [ 访问函数getter 合约创建 合约对象 合约继承IS ]

智能合约实战 solidity 语法学习 08 [ 访问函数getter 合约创建 合约对象 合约继承IS ]