C指向结构中的2d数组

时间:2013-09-05 01:33:37

标签: c arrays pointers struct

我有一个带有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”的正确方法是什么?

2 个答案:

答案 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>