solidity,智能合约的学习(5)

本文介绍了Solidity中的引用类型,包括数组、结构体和映射,强调了数据存储在storage、memory和calldata的区别。详细阐述了不同存储位置的赋值规则以及变量的作用域,如状态变量、局部变量和全局变量,并提醒学习者注意如何节省空间和降低gas fee。
摘要由CSDN通过智能技术生成

Solidity中的引用类型

引用类型(Reference Type)包含:数组(array)、结构体(struct)、映射(mapping),这种类型变量占用空间较大,赋值时直接传递地址(类似C语言的指针)。由于该类型比较复杂,因此我们使用时必须声明数据存储的位置。

数据的位置

Solidity的数据存储位置有三类:storage、memory、calldata。不同的存储位置的gas fee不同。

storage:合约的状态变量一般都默认是storage,存储在链上,类似存储在计算机的硬盘,因此消耗gas fee较高。

memory:函数里的参数和临时变量一般使用memory,存储在内存,不上链。

calldata:与memory类似,不同点是calldata声明的变量不能进行修改,一般用于函数的参数。

数据位置和赋值规则

在不同的存储类型相互赋值时,有时会产生独立的的副本(修改新变量不会影响原变量),有时会

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

bitpen

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值