# 值類型與引用類型
由于Solidity是一個靜態類型的語言,所以編譯時需明確指定變量的類型(包括`本地變量`或`狀態變量`),`Solidity`編程語言提供了一些`基本類型(elementary types)`可以用來組合成復雜類型。
類型可以與不同運算符組合,支持表達式運算,你可以通過[表達式的執行順序(Order of Evaluation of Expressions)](../進階/表達式的執行順序.md)來了解執行順序。
## 值類型(Value Type)
`值類型`包含
- `布爾(Booleans)`
- `整型(Integer)`
- `地址(Address)`
- `定長字節數組(fixed byte arrays)`
- `有理數和整型(Rational and Integer Literals`,`String literals)`
- `枚舉類型(Enums)`
- `函數(Function Types)`
為什么會叫`值類型`,是因為上述這些類型在傳值時,總是值傳遞。比如在函數傳參數時,或進行變量賦值時。
## 引用類型(Reference Types)
復雜類型,占用空間較大的。在拷貝時占用空間較大。所以考慮通過引用傳遞。常見的引用類型有:
- 不定長字節數組(bytes)
- 字符串(string)
- 數組(Array)
- 結構體(Struts)
---
關于參數傳遞的相關方式的進一步了解: [http://baike.baidu.com/item/參數傳遞](http://baike.baidu.com/item/%E5%8F%82%E6%95%B0%E4%BC%A0%E9%80%92)
- Solidity語言
- 入門說明
- Solidity智能合約文件結構
- 智能合約源文件的基本要素概覽
- 值類型
- 類型
- 布爾
- 整型
- 地址
- 字節數組
- 小數
- 字符串
- 十六進制字面量
- 枚舉
- 函數
- 引用類型
- 引用類型
- 數據位置
- 數組
- 數據結構
- 雜項
- 映射
- 左值運算符
- 類型間的轉換
- 類型推斷
- 單位
- 貨幣單位
- 時間單位
- 語言內置特性
- 特殊變量及函數
- 數學和加密函數
- 地址相關
- 進階
- 入參和出參
- 控制結構
- 函數調用
- 創建合約實例
- 表達式的執行順序
- 賦值
- 作用范圍和聲明
- 異常
- 內聯匯編
- 合約詳解
- 合約
- 可見性或權限控制
- 訪問函數
- 函數修改器
- 常狀態變量
- 回退函數
- 事件
- 繼承
- 接口
- 其它
- 庫
- 狀態變量的存儲模型
- 內存變量的存局
- 調用數據的布局