19数组

数组

  • 长度可以固定fixed也可以动态dynamic
  • 数组初始化
  • 数组操作:insert(push),get,update,delete,pop,length
  • 在memory中常见数组
  • 函数中返回数组

数组初始化

    uint[]public nums=[1,2,3];
    uint[3]public numsFixed=[4,5,6];

数组操作:insert(push),get,update,delete,pop,length

    function examples() external {
        // push
        nums.push(4);//[1,2,3,4]

        // get
        uint x=nums[1];//2

        // modify
        nums[2]=777;//[1.2.777,4]

        //delete:不会改变长度,是把删除的元素的值重置为默认值0
        delete nums[1];//[1,0,777,4]

        //pop:弹出数组的最后一个值,长度-1
        nums.pop();//[1,0,777]

        // 数组长度
        uint len=nums.length;
    }    

在memory中常见数组

        // 内存中常见数组,必须常见fixed数组
        uint [] memory arr=new uint[](5);
        // 在内存中,不能使用push和pop方法,因为这两个方法会改变长度,只能根据索引修改值
        // 内存中只能存储定长数组,动态数组只能存在于状态变量

函数中返回数组

    // 返回数组全部元素
    function returnArray() external view returns (uint[]memory){
        return nums;
    }
// SPDX-License-Identifier: MIT
pragma solidity 0.8.18;

contract Array{
    uint[]public nums=[1,2,3];
    uint[3]public numsFixed=[4,5,6];

    function examples() external {
        // push
        nums.push(4);//[1,2,3,4]

        // get
        uint x=nums[1];//2

        // modify
        nums[2]=777;//[1.2.777,4]

        //delete:不会改变长度,是把删除的元素的值重置为默认值0
        delete nums[1];//[1,0,777,4]

        //pop:弹出数组的最后一个值,长度-1
        nums.pop();//[1,0,777]

        // 数组长度
        uint len=nums.length;

        // 内存中常见数组,必须常见fixed数组
        uint [] memory arr=new uint[](5);
        // 在内存中,不能使用push和pop方法,因为这两个方法会改变长度,只能根据索引修改值
        // 内存中只能存储定长数组,动态数组只能存在于状态变量
    }
    // 返回数组全部元素
    function returnArray() external view returns (uint[]memory){
        return nums;
    }
}