我有一个带有2d数组的结构。我将指向此结构的指针传递给函数,我需要编辑2d数组。我正在努力找到正确的语法来引用我的函数中的2d数组。
#define TG_WIDTH 10
#define TG_HEIGHT 20
typedef enum {
BLOCK_T = 0,
BLOCK_LINE,
BLOCK_SQUARE,
BLOCK_L,
BLOCK_L_REVERSE,
BLOCK_S,
BLOCK_S_REVERSE
} block_t;
typedef struct {
char y_max[TG_WIDTH];
block_t grid[TG_WIDTH][TG_HEIGHT];
} scratchpad_t;
bool
placeBlock(scratchpad_t *sp) {
block_t (*g)[TG_WIDTH] = sp->grid;
g[1][2] = BLOCK_T;
}
这给了我一个“从不兼容的指针类型初始化”的警告。在这里定义/初始化“g”的正确方法是什么?
答案 0 :(得分:3)
将TG_WIDTH
更改为TG_HEIGHT
:
block_t (*g)[TG_HEIGHT] = sp->grid;
答案 1 :(得分:2)
最简单的可能有什么问题?
sp->grid[1][2] = BLOCK_T;
如果你的函数中有很多数组访问,并且你想要考虑sp->grid
,因为你认为这会更快(更少的解引用),我认为所有优化的C编译器都能很好地处理它。 / p>