[英]C pointer to 2d array in a struct
我有一個帶有二維數組的結構。 我正在將指向該結構的指針傳遞給函數,在這里我需要編輯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”的正確方法是什么?
更改TG_WIDTH
到TG_HEIGHT
:
block_t (*g)[TG_HEIGHT] = sp->grid;
最簡單的怎么了?
sp->grid[1][2] = BLOCK_T;
如果您的函數中有很多數組訪問權限,並且由於您認為這會更快(取消引用的次數較少)而希望將sp->grid
排除在外,那么我認為所有優化的C編譯器都可以很好地解決這一問題。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.