将二维数组传递给c中的函数

将二维数组传递给c中的函数,c,arrays,pointers,C,Arrays,Pointers,可能重复: 在C中, 如果我想让一个函数接收二维数组,我可以用*符号表示函数参数吗 int (int my2dary[][10]); //This is what I do not want. 是的,您传递一个指向int数组的指针 int func(int (*my2dary)[10]); 你管它叫什么 int a[5][10]; func(a); 虽然,func不知道在my2dary中有多少个元素,所以您也必须给出一个数字 int func(int n, int (*my2dary)

可能重复:

在C中, 如果我想让一个函数接收二维数组,我可以用*符号表示函数参数吗

int (int my2dary[][10]);  //This is what I do not want.

是的,您传递一个指向int数组的指针

int func(int (*my2dary)[10]);
你管它叫什么

int a[5][10];
func(a);
虽然,
func
不知道在
my2dary
中有多少个元素,所以您也必须给出一个数字

int func(int n, int (*my2dary)[10]);
打电话

int a[5][10];
func(5, a);

请参阅或。

如果您的问题是在编译时不知道数组的大小,您可能需要:

int func(int *array, int size)
{
   int n,m;
   ... 
   array[m*size+n]; /* = array[m][n] if in the caller: int array[x][size]; */
}
或者(很可能您需要)您可以传递第二个size参数(x)来测试数组边界