【solidity】memory和storage(14)

Page content

这篇文章简单的整理了memory和storage相关的内容。

1.memory和storage简单例子

pragma solidity ^0.4.0;

contract memoryTest {

    uint public num1 = 5;

    function add(uint num) pure public returns(uint) {
        num = num+1;
        return num;
    }

    function test() pure public returns(uint, uint){
        uint i =2;
        uint j = add(i);
        return(i,j); // i = 2, j = 3
    }

    function changeNum1() public {
        num1 = num1 + 1; // 只有这操作影响全局变量num1
        add(num1); // 这个没效果
    }
}

2.数组操作的特例

pragma solidity ^0.4.0;

contract memoryTest {

    uint[] public arrx;

    function test(uint[] arry) public returns(uint){
        arrx = arry;

        //当我们在函数内部定义了一个可变长度的数组时,他默认类型是storage类型
        //arrz 指向了区块链上的 arrx,所以修改arrz元素时,arrx也会搜到影响
        uint[] arrz = arrx;
        
        arrz[0]=100; //该操作也会影响arrx
    }
}

欢迎大家的意见和交流

email: li_mingxie@163.com