gpt4 book ai didi

二维指针数组中的单元格索引

转载 作者:行者123 更新时间:2023-11-30 16:47:50 27 4
gpt4 key购买 nike

对于学校,我正在开发一个项目,我必须使用指针保存 map 。该 map 由“单元”结构组成。初始化 map 时,我想使用函数index_map返回单元格的地址,以便我可以更改它的属性。但是,当我尝试编译此代码时,会发生以下错误:

警告:从不兼容的指针类型赋值[-Win兼容的指针类型] placeInMap = &(w->map) + stepxx + stepyy;

这是我的index_map函数:

`cell* index_map(worldmap* w, int x, int y) 
{
cell* cellInMap;
size_t stepx = sizeof(cell)*w->cols;
size_t stepy = sizeof(cell);
cellInMap = &(w->map) + stepx*x + stepy*y;
return cellInMap;
}*`

世界地图是一个结构,定义为:

`typedef struct worldmap
{
cell* map;
unsigned int rows;
unsigned int cols;
} worldmap;`

Cell 是一个结构体,定义为:

`typedef struct cell
{
celltype type;
unsigned int owner;
}cell;`

最佳答案

w->map 是一个cell *。 C 中的指针算术已经考虑了数组元素的大小,因此要获取单元格 x y 的地址,只需添加行索引乘以列数和列索引即可:

cellInMap = w->map + x*w->col + y;

出现警告是因为您使用了 &(w.map) 这是一个 cell ** 来分配给 cell * 所以具有不同的指数化水平。

关于二维指针数组中的单元格索引,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43188052/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com