通过C中的指针传递可变大小的多维数组

nit*_*tzs 1 c multidimensional-array

我试图将可变大小的2D数组传递给函数来打印它.我知道当一个固定大小的数组时它是如何完成的.但是如何使用可变大小的数组做到这一点?这里有一些代码可以让你知道我想要做什么:

void print_grid(char (*g)[9], int size) // the array subscript (9 here) be variable
{
   int i, j;
   for (i=0; i<size; i++)
   {
      for (j=0; j<size; j++)            
         printf("%c ", g[i][j]);
      printf("\n");
   }
}
Run Code Online (Sandbox Code Playgroud)

我将使用以下代码调用此函数:

char a[3][3], b[9][9];
// assign a, b
print_grid(a, 3);
print_grid(b, 9);
Run Code Online (Sandbox Code Playgroud)

如果没有在print_grid()中分配任何动态内存,有没有办法做到这一点?

R..*_*R.. 5

void print_grid(int rows, int cols, char g[][cols]) { ... }
Run Code Online (Sandbox Code Playgroud)