簡體   English   中英

指向結構中2D數組的C指針

[英]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_WIDTHTG_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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM