You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

咨询Solidity中new address[](2)语句的具体作用与用法

Solidity 代码语句拆解

你遇到的原代码如下:

address[] memory path = new address[](2);

整句各部分逐段释义

  • address[]:声明变量类型为地址类型动态数组,数组内的所有元素都必须是合法的以太坊address类型值。
  • memory:数据位置修饰符,代表该数组存储在临时内存空间中,仅在当前函数执行周期内有效,不会被永久写入链上存储,gas开销远低于链上存储变量,适合存放函数运行时的临时中间数据。
  • path:当前声明的数组变量名,这类命名的数组最常出现在DEX兑换逻辑中,用来记录代币兑换的路径地址序列。
  • =:赋值操作符,将右侧实例化完成的数组对象赋值给左侧声明的path变量。

new address[](2)的具体作用

这部分是整句的实例化逻辑,作用是在内存中创建一个初始长度为2的address类型数组实例,各子部分含义:

  • new:Solidity中用于实例化内存数组、新合约实例的关键字,注意通过new创建的内存数组,必须在创建时指定固定长度,创建完成后无法再修改数组长度,这一点和链上storage存储的动态数组可以随意push、修改长度的特性有明显区别。
  • address[]:指定当前实例化的对象类型为地址数组。
  • (2):指定新数组的初始长度为2,数组创建完成后会自动生成2个可访问的元素位,索引分别为0和1,每个位置的初始默认值为零地址address(0),后续可以直接通过索引给对应位置赋值。

常见使用示例

这类长度为2的path数组一般用于单跳兑换场景,实例化完成后通常会按如下逻辑赋值:

// 以WETH兑换USDC的单跳路径为例
path[0] = 0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2; // WETH合约地址
path[1] = 0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48; // USDC合约地址

内容的提问来源于stack exchange,提问作者Seaworn

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.03 01:03:36