javascript - 如何将多维数组从 Javascript 转换为 C?
问题描述
我目前正在使用 Raylib 框架将代码从 JavaScript 转换为 C 以进行游戏编码练习,我遇到了以下代码:
area: {
columns:8,
map:[ 0, 0, 0, 0, 0, 0, 3, 0,
0, 0, 5, 0, 0, 0, 0, 4,
0, 7, 0, 0, 6, 2, 0, 4,
0, 1, 1, 1, 1, 1, 1, 1,
7, 0, 0, 0, 0, 0,13, 0,
0,11,12, 9,10, 0, 0, 7,
0, 1, 1, 1, 1, 1, 1, 1,
12, 0,14,14,14, 0, 8, 0 ]
}
由于我在 C 中工作,我认为这是不言自明的,因为它看起来像一个多维数组。我发现列变量很奇怪,所以我忽略了它(我稍后会回来)。然后,稍后在 JavaScript 代码中,我看到一个具有以下内容的函数:
var value = area.map[row * area.columns + column];
所以,这是一个有两个成员的对象;一个名为“column”的 int 和一个名为“map”的多维数组;我可以做一个结构。但是,为什么 area.map[] 只有一个括号,这不应该是一个多维数组吗?数组的哪些元素在这里被操作?另一个支架在哪里?我如何将它翻译成 C 代码来读取数组?
解决方案
不确定这是否是您所追求的,但这是C语言的翻译
struct Area
{
unsigned int columns;
unsigned int map[];
};
struct Area area = {
.columns = 8,
.map = { 0, 0, 0, 0, 0, 0, 3, 0,
0, 0, 5, 0, 0, 0, 0, 4,
0, 7, 0, 0, 6, 2, 0, 4,
0, 1, 1, 1, 1, 1, 1, 1,
7, 0, 0, 0, 0, 0,13, 0,
0,11,12, 9,10, 0, 0, 7,
0, 1, 1, 1, 1, 1, 1, 1,
12, 0,14,14,14, 0, 8, 0 }
};
unsigned int value = area.map[row * area.columns + column];
推荐阅读
- c# - Unity2D:播放器与对象发生碰撞时显示消息
- clojure - Clojure 列表理解 - 在某些情况下只运行一次内部循环?
- php - PHP按时间顺序将存储数组中的值设置为嵌套的foreach循环
- javafx - JavaFX 虚拟键盘与文本字段组件重叠
- highcharts - 如何在highcharts中获取轴列刻度的高度
- sql - 查询仅获取停车场内的汽车
- amazon-web-services - AWS Redshift 添加节点并从单节点更改为多节点以增加磁盘大小
- elasticsearch - 两个过滤器的 Elasticsearch 查询
- docker - 未加密的 Docker 密码
- c# - C# foreach 循环 - 递增不适用于 Excel 单元格地址