个人目录
以太坊solidity学习记录(一)新版在线remix编译器的使用(2020.4.27)
以太坊solidity学习记录(二)基础操作整理
以太坊solidity学习记录(三)基础数据操作
以太坊solidity学习记录(四)地址与交易
以太坊solidity学习记录(五)函数入门
以太坊solidity学习记录(六)内存与结构体
1.memory与storage
结论:
1.在solidity合约内部
函数外部声明的变量默认储存在storage里
函数内部声明的变量默认储存在memory里
storage | memory | |
---|---|---|
储存的变量 | 函数外部声明的变量,即状态变量 | 函数内部声明的变量,即局部变量 |
存储的位置 | 区块链上,永久存在 | 内存中,运行完之后销毁 |
运行的位置 | 区块链网络上 | 单个节点 |
传递属性 | 指针传递 | 值传递 |
可参考
Solidity的数据位置特性深入详解(九)| 入门系列(老是遇到转换问题的来看看)
『0007』- Solidity状态变量、局部变量与memory 、storage之间的爱恨情仇
2.结构体基础
直接看代码吧
pragma solidity ^0.4.0;
contract structtest1{
struct stu{
uint id;
string name;
mapping(uint=>string) maptest; //mapping即使在结构体内,初始化时也是可以忽略的
}
function init1() public returns(uint,string){
stu memory student1= stu(1234,'stu1');
return (student1.id,student1.name); //初始化方法一
}
function init2() public returns(uint,string){
stu memory student2=stu({
name:'stu2',id:5678});
return (student2.id,student2