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

Solidity多维数组存储顺序咨询:行优先还是列优先?

Solidity多维数组的存储顺序:行优先(Row Major)

Solidity中的多维数组遵循**行优先(Row Major)**的存储顺序,即先完整存储第一行的所有元素,再依次存储后续每一行的元素。

固定大小多维数组示例

以固定大小的二维数组为例:

// 逻辑上为3行2列的二维数组(Solidity中声明顺序为[列数][行数],需注意语法差异)
uint[2][3] fixedArr = [
    [1, 2],  // 第1行
    [3, 4],  // 第2行
    [5, 6]   // 第3行
];

它在存储中的顺序是:1 → 2 → 3 → 4 → 5 → 6,完全按照行的顺序依次存储每行的所有元素。

动态多维数组说明

对于动态多维数组(如uint[][] dynamicArr),主数组存储的是每个子数组的存储地址,而每个子数组内部的元素依然遵循行优先的顺序存储。比如初始化:

uint[][] dynamicArr;
dynamicArr.push([10, 20]);
dynamicArr.push([30, 40]);

主数组会先存储第一个子数组[10,20]的存储位置,再存储第二个子数组[30,40]的位置;而每个子数组内部的元素是按10→20、30→40的顺序存储的,依然符合行优先规则。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.10 23:15:42