Appearance
存储位置 
在 Solidity 中,有两种类型的存储位置:存储器(memory)和状态变量(storage)。
存储器(memory)是临时存储位置,数据在函数调用结束后被销毁。
这种存储位置通常用于函数调用时需要暂时保存数据的情况,例如,将函数参数复制到存储器中以备用。
状态变量(storage)是永久性存储位置,数据会一直保存在区块链上。
这种存储位置通常用于存储合约中的数据和状态信息。在 Solidity 中,状态变量可以在合约级别声明,也可以在函数级别声明。
示例 
下面是一个使用 Solidity 存储器和状态变量的示例:
solidity
pragma solidity ^0.8.0;
contract StorageExample {
    uint[] data;  // 状态变量
    function addData(uint[] memory _data) public {
        for (uint i = 0; i < _data.length; i++) {
            data.push(_data[i]);  // 调用状态变量存储数据
        }
    }
    function getData() public view returns (uint[] memory) {
        return data;  // 返回状态变量的数据
    }
    function sumData(uint[] memory _data) public pure returns (uint) {
        uint sum = 0;
        for (uint i = 0; i < _data.length; i++) {
            sum += _data[i];  // 存储器暂存数据,不影响状态变量
        }
        return sum;
    }
}在这个示例中,我们创建了一个名为 StorageExample 的合约。
我们在合约级别声明了一个 uint 类型的数组数据 data,它是一个状态变量。
addData 函数接受一个 uint 数组作为参数,使用 for 循环将参数中的每个元素添加到 data 数组中。
getData 函数返回 data 数组。sumData 函数接受 uint 数组作为参数,使用存储器变量暂时存储数据,计算总和并返回。