memory

memory关键字用来声明一个存储在EVM临时内存区中的变量。使用memory声明的变量不会存储在区块链上,在函数调用结束后不可访问。

定义一个memory变量

1
2
3
4
5
6
7
8
pragma solidity ^0.8.0;

contract Lesson12{
function myFunction() public pure{
uint256 myMemoryVariable;
myMemoryVariable=0;
}
}

在函数中使用memory变量

1
2
3
4
 function setData2(uint256 value) public pure{
uint256 myMemoryVariable;
myMemoryVariable = value;
}

storage

storage关键字用于声明一个存储在EVM持久存储区域中的变量。这些变量在合约部署后会持久化在区块链上,可以在之后的效用中读取和修改。

定义一个storage变量

1
2
3
4
5
6
7
8
9
10
pragma solidity ^0.8.0;

contract Lesson7{
uint256 public myStorageVariable;

constructor() {
myStorageVariable=0;
}

}

在函数中使用storage变量

1
2
3
 function setData(uint256 value) public {
myStorageVariable = value;
}