文章目录
- 值类型与引用类型
- Solidity语言特点
- 数据类型分类
- 代码演示
- 值类型演示
- 测试数据类型类型
- 引用类型注意事项 (重点)
- 引用类型之memory测试
- 引用类型之storage测试
值类型与引用类型
Solidity语言特点
- 没有main、没有多线程、合约与合约里面的函数都是通过地址调用
- 语法简单、类似javascript
- 不成熟,但版本更新较快,且兼容性不太好
- 具备面向对象特性:封装、继承、多态
数据类型分类
值类型 (值传递)、引用类型 (指针传递, 类似桌面的快捷方式)
值类型包括
- 布尔值
- 整型
- 地址(Address)
- 定长字节数组
- 有理数和整型
- 枚举类型
- 函数
引用类型
solidity没有指针,是采用storage进行修饰,复杂类型占有较大的空间,在拷贝时占用空间较大。下面这些类型设置为引用
- 数组 (Array)
- 结构体
- 映射
代码演示
值类型演示
测试数据类型类型
引用类型注意事项 (重点)
- 值类型没有数据位置的概念,每次赋值时都有独立的副本!
- 引用类型包括:数组、结构体,映射、字符串(bytes数组), 只有引用类型才有数据位置的概念
- 三种位置,先掌握内存与存储变量
3.1 内存其生命周期只存在与函数调用期间 --> 函数调用完毕后消失
3.2 存储: 状态变量 —> 随着合约部署到区块链中(以太坊分布式账本)
3.3 调用数据 ( 暂时理解成内存变量 略)
4.默认的函数参数,包括返回的参数,他们是memory 默认的局部变量是storage。而状态变量只能是storage
注意:在版本0.5.0之前,数据位置(memory/storage)可以省略,在0.5.0之后需要指定
引用类型之memory测试
引用类型之storage测试