# 【Array】

一個程式語言中最經典的資料結構莫過於`array` 了，陣列的性質如下：

1. 擁有兩個成員：`.length`, `.push(element)`
2. 可為固定或動態的長度，取決於我們是否宣告陣列的長度。
3. `T[][5]` 是五個動態陣列長度的組合（reverse notation）

```solidity
pragma solidity ^0.8.11;

contract MyArray {
    uint256[] arr_1;
    uint256[] arr_2 = [3,2,4];
    uint256[5] arr_3;
    uint[][] array2D = [ [1,2,3], [4,5,6] ];
    
    function getValueOfIndex(uint256 _index) public view returns (uint256) {
        return arr_2[_index];
    }
    
    // 在一個陣列的最後加入一個元素
    function addToArray(uint256 _value) public  {
        arr_2.push(_value);
    }
    
    // 調用一個陣列的長度
    function valueCount() public view returns(uint) {
        return arr_3.length;
    }
}
```

#### 動態記憶體配置

```solidity
uint[] memory arr = new uint[](3);
```

如果我們訪問了超過記憶體的值，Solidity 不會向其他語言一樣丟 Runtime Error 回來，而是會返回該型態的預設值。
