以太坊(七)Solidity的数据类型

这几天再写智能合约的过程中发现对Solidity语法还是不慎了解,踩了很多坑,所以这几天还是细细梳理下语法。

概述

Solidity 是一种 静态类型语言,意味着每个变量(本地或状态变量)需要在编译时指定变量的类型(或至少可以推倒出类型)。Solidity 提供了一些基本类型可以用来组合成复杂类型。

Solidity 类型分为两类:

  • 值类型 (Value Type) - 变量在赋值或传参时总是进行值拷贝。
  • 引用类型 (Reference Types)

值类型 (Value Type)

值类型包含:

  • 布尔类型 (Booleans)
  • 整型 (Integers)
  • 定长浮点型 (Fixed Point Numbers)
  • 定长字节数组 (Fixed-size byte arrays)
  • 有理数和整型字面量 (Rational and Integer Literals)
  • 字符串字面量(String literals)
  • 十六进制字面量(Hexadecimal literals)
  • 枚举 (Enums)
  • 函数 (Function Types)
  • 地址 (Address)
  • 地址字面量 (Address Literals)

值类型传值时,会临时拷贝一份内容出来,而不是拷贝指针,当你修改新的变量时,不会影响原来的变量的值。

int a = 100;  // a == 100
int b = a;   // b == 100,a == 100
b = 300;    // b == 300,a == 100

引用类型 (Value Type)

引用类型包含:

  • 不定长字节数组(bytes)
  • 字符串(string)
  • 数组(Array)
  • 结构体(Struts)

引用类型,赋值时,我们可以值传递,也可以引用即地址传递,如果是值传递,和上面的案例一样,修改新变量时,不会影响原来的变量值,如果是引用传递,那么当你修改新变量时,原来变量的值会跟着变化,这是因为新就变量同时指向同一个地址的原因。

今天就简单记录下有哪些是值类型,哪些是引用类型,以及值类型和引用类型的简单区别。下一篇文章再学习引用类型赋值时如何进行值传递和地址传递

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 翻译原文date:20170617 Solidity是静态类型语言,这意味着每个变量的类型必须在编译的时候指定(或...
    gaoer1938阅读 696评论 0 0
  • 前言 把《C++ Primer》[https://book.douban.com/subject/25708312...
    尤汐Yogy阅读 9,540评论 1 51
  • 总有一道美食在某个时刻触碰到了你的灵魂,这道美食一定和故乡有关,和回忆有关。今天我要说的这道美食,就是在...
    来喜小六六阅读 1,398评论 0 0
  • 最近学习了混淆,并在项目里运用到了,结果收到异常报告的时候傻眼了,类名,方法名都被a,b,c代替了,这让我怎么知道...
    沈同学阅读 10,321评论 8 50
  • “问君归期未有期,巴山夜雨涨秋池。何当共剪西窗烛,却话巴山夜雨时”。少年时代只知是李商隐的诗,是他的故事。三...
    月喜阅读 201评论 0 0