solidity 参数bytes[]_区块链_Solidity智能合约_函数、事件与日志03

f567f74ae0b812cd22f76e9eb3651a9c.png

文章目录

  • 值类型与引用类型
    • Solidity语言特点
    • 数据类型分类
  • 代码演示
    • 值类型演示
    • 测试数据类型类型
    • 引用类型注意事项 (重点)
    • 引用类型之memory测试
    • 引用类型之storage测试

值类型与引用类型

Solidity语言特点

  1. 没有main、没有多线程、合约与合约里面的函数都是通过地址调用
  2. 语法简单、类似javascript
  3. 不成熟,但版本更新较快,且兼容性不太好
  4. 具备面向对象特性:封装、继承、多态

数据类型分类

值类型 (值传递)、引用类型 (指针传递, 类似桌面的快捷方式)

值类型包括

  • 布尔值
  • 整型
  • 地址(Address)
  • 定长字节数组
  • 有理数和整型
  • 枚举类型
  • 函数

引用类型

solidity没有指针,是采用storage进行修饰,复杂类型占有较大的空间,在拷贝时占用空间较大。下面这些类型设置为引用

  • 数组 (Array)
  • 结构体
  • 映射

代码演示

值类型演示

5e7d3ce6389e369b864cb4b0fa645ac8.png

测试数据类型类型

c546b4f903d1a5a3170b573f4c8401b3.png

引用类型注意事项 (重点)

  1. 值类型没有数据位置的概念,每次赋值时都有独立的副本!
  2. 引用类型包括:数组、结构体,映射、字符串(bytes数组), 只有引用类型才有数据位置的概念
  3. 三种位置,先掌握内存与存储变量

3.1 内存其生命周期只存在与函数调用期间 --> 函数调用完毕后消失

3.2 存储: 状态变量 —> 随着合约部署到区块链中(以太坊分布式账本)

3.3 调用数据 ( 暂时理解成内存变量 略)

4.默认的函数参数,包括返回的参数,他们是memory 默认的局部变量是storage。而状态变量只能是storage

注意:在版本0.5.0之前,数据位置(memory/storage)可以省略,在0.5.0之后需要指定

引用类型之memory测试

17cc6ff7a2adf3c0967b052b33aa9245.png

引用类型之storage测试

201ee71d21cdfe9aea5a58cd25ec2809.png

9d8b1fd2d1873718ea9168d164e23bd1.png

936bab9f4d6d9583f6d2d2cd79fa330a.png
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值