# 变量初始值

By [startha](https://paragraph.com/@starha) · 2023-09-20

---

变量初始值
-----

在solidity中，声明但没赋值的变量都有它的初始值或默认值。

### 值类型初始值

*   `boolean`：`false`
    
*   `string`：`""`
    
*   `int`：`0`
    
*   `uint`：`0`
    
*   `enum`：`枚举中的第一个元素`
    
*   `address`：`0x0000000000000000000000000000000000000000` (或`address(0)`)
    
*   `function`
    
    *   `internal`: 空白函数
        
    *   `external`: 空白函数
        

可以使用`public`变量的`getter`函数验证上面的初始值是否正确：

        bool public _bool;   //false
        string public _string; //""
        int public _int; //0
        uint public _uint; //0
        address public _address; //0x0000000000000000000000000000000000000000
    
        enum ActionSet {Buy,Hold,Sell}
        ActionSet public _enum;  //第一个元素0
    
        function fi() internal {}  //internal空白函数
        function fe() external {}  //external空白函数
    

### 引用类型初始值

*   映射`mapping`：所有元素都为其默认值得`mapping`
    
*   结构体`struct`：所有成员设为默认值的结构体
    
*   数组`array`：
    
    *   动态数组：`[]`
        
    *   静态数组（定长）：所有成员设为其默认值的静态数组
        

可以使用`public`变量的`getter`函数验证上面的初始值是否正确：

        uint[8] public _staticArray; //所有成员设为默认值的静态数组[0,0,0,0,0,0,0,0]
        uint[] public _dyanmicArray; //`[]`
        mapping(uint => address) public _mapping; //所有元素都为其默认值的mapping
    
        //所有成员设为其默认值的结构体0,0
        struct Stuent {
            uint256 id;
            uint256 score;
        }
    
        Stuent public student;
    

### delete操作符

`delete a`会让变量`a`的值变为初始值。

        //delete操作符
        bool public _bool2 = true;
        function d() external {
            delete _bool2; // delete 会让_bool2变为默认值，false
        }

---

*Originally published on [startha](https://paragraph.com/@starha/t11XBWVy2GpCJHJI3E3e)*
