以太坊技术开发课程03:Solidity编程语言值类型和引用类型讲解(图文)

solidity值类型与引用类型

solidity编程语言基础,首先要链接值类型和引用类型的关系,这是一个基础课程,当然具体的可以查看solidity开发手册,本人一点带面,讲解关于solidity程序语言的值类型和引用类型的关系。

Solidity语言特点

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

数据类型分类

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

值类型包括

  • 布尔值
  • 整型
  • 地址(Address)
  • 定长字节数组
  • 有理数和整型
  • 枚举类型
  • 函数
注意:solidity语言,函数是值类型,所以函数是可以单独赋值的。
关于值类型的数据类型代码演示:
值类型的数据类型

引用类型

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

  • 数组 (Array),不定长数组属于引用类型,定长数组属于值类型。
  • 结构体
  • 映射

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

  1. 值类型没有数据位置的概念,每次赋值时都有独立的副本!
  2. 引用类型包括:数组、结构体,映射、字符串(bytes数组), 只有引用类型才有数据位置的概念
  3. 三种位置,先掌握内存与存储变量
    3.1 内存其生命周期只存在与函数调用期间 --> 函数调用完毕后消失
    3.2 存储: 状态变量 —> 随着合约部署到区块链中(以太坊分布式账本)
    3.3 调用数据 ( 暂时理解成内存变量 略)
  4. 默认的函数参数,包括返回的参数,他们是memory 默认的局部变量是storage。而状态变量只能是storage

注意:在版本0.5.0之前,数据位置(memory/storage)可以省略,在0.5.0之后需要指定
关于数据位置Memory和Storage的代码演示:

memory
storage

 

为什么solidity高级语言,对于代码的精简要求那么高,这和智能合约的开发有关系,那么我们详细看一下,uint数据类型的具体使用:
uint值类型的用法

免责声明:本文由信比特作者原创文章,不构成投资建议,请谨慎对待。

版权声明:信比特作者保留原创权利。文章为作者独立观点,转载请注明出处

原文链接:http://www.bitpoa.com/BlockchainCollege/108.html

生成海报
收藏

相关推荐

0 条评论

微信扫一扫

微信扫一扫

微信扫一扫,分享到朋友圈

以太坊技术开发课程03:Solidity编程语言值类型和引用类型讲解(图文)