引用类型/复合数据类型
Solidity中,有一些数据类型由值类型组合而成,相比于简单的值类型,这些类型通常通过名称引用,被称为引用类型。
引用类型包括:
- 数组 (字符串与bytes是特殊的数组,所以也是引用类型)
- struct (结构体)
- map (映射)
变量
状态变量
Solidity 支持三种类型的变量:
状态变量 – 变量值永久保存在合约存储空间中的变量。
局部变量 – 变量值仅在函数执行过程中有效的变量,函数退出后,变量无效。
全局变量 – 保存在全局命名空间,用于获取区块链相关信息的特殊变量。
Solidity 是一种静态类型语言,这意味着需要在声明期间指定变量类型。每个变量声明时,都有一个基于其类型的默认值。没有undefined或null的概念。
pragma solidity ^0.4.22;
contract SolidityTest1{
uint storedDate; //状态变量
constructor() public {
storedDate = 10; //使用状态变量
}
}
局部变量
变量值仅在函数执行过程中有效的变量,函数退出后,变量无效。函数参数是局部变量
pragma solidity ^0.4.22;
contract SolidityTest2{
uint storedDate; //状态变量
constructor() public{
storedDate = 10;
}
function getResult() public view returns(uint){
uint a=1; //局部变量
uint b=2;
uint result = a+b;
return result;//访问局部变量
}
}