我有一个带有二维数组的结构。我把指向这个结构的指针传递给一个函数,在那里我需要编辑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“的正确方法是什么?
发布于 2013-09-05 01:40:13
将TG_WIDTH
更改为TG_HEIGHT
block_t (*g)[TG_HEIGHT] = sp->grid;
发布于 2013-09-05 01:37:03
最简单的可能有什么问题?
sp->grid[1][2] = BLOCK_T;
如果您的函数中有许多数组访问,并且您认为这样做会更快(减少取消引用),并且希望对sp->grid
进行筛选,那么我认为所有优化的C编译器都能很好地处理这个问题。
https://stackoverflow.com/questions/18626380
复制相似问题