1

我有一个带有二维数组的结构。我将指向这个结构的指针传递给一个函数,我需要在其中编辑二维数组。我正在努力寻找正确的语法来从我的函数中引用二维数组。

#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”的正确方法是什么?

4

2 回答 2

3

更改TG_WIDTHTG_HEIGHT

block_t (*g)[TG_HEIGHT] = sp->grid;
于 2013-09-05T01:40:13.463 回答
2

最简单的可能有什么问题?

sp->grid[1][2] = BLOCK_T;

如果您的函数中有许多数组访问,并且您想排除sp->grid因为您认为这会更快(取消引用更少),我认为所有优化的 C 编译器都很好地处理了这一点。

于 2013-09-05T01:37:03.310 回答