c中带有2d数组参数的函数调用和函数原型

D_M*_*Man 5 c arrays syntax function-prototypes

void setup_map (int *map); <--- prototype

int row, col;  <-- global variables

some main 
{
  //get number of rows and cols from user
  int map[rows][cols]; //create map here because another function uses it
  setup_map (map[row][col]);
}

void setup_map (int map[row][col])
{
  loop through and set up map
}
Run Code Online (Sandbox Code Playgroud)

我的问题是我不能完全正确地设计原型,我希望有什么地方可以向我解释原型需要是什么?我刚刚开始学习指针,并非常了解这个概念,只是从未使用过2d数组作为参数。谢谢你的帮助。

小智 4

正确的原型包括:

void setup_map(int map[ROWS][COLS]);
void setup_map(int map[][COLS]);
void setup_map(int (*map)[COLS]);
Run Code Online (Sandbox Code Playgroud)

并称其为:

setup_map(map);
Run Code Online (Sandbox Code Playgroud)

但请注意,行数和列数必须是编译时常量才能正常工作。