通过二维数组在c中起作用

时间:2013-02-03 01:38:21

标签: c arrays pointers

  

可能重复:
  Passing multidimensional arrays as function arguments in C

在C中,  如果我想要一个函数来接收二维数组,我可以使用*表示法作为函数参数

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

2 个答案:

答案 0 :(得分:0)

是的,您将指针传递给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);

请参阅How to interpret complex C/C++ declarationsThe ``Clockwise/Spiral Rule''

答案 1 :(得分:0)

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

int func(int *array, int size)
{
   int n,m;
   ... 
   array[m*size+n]; /* = array[m][n] if in the caller: int array[x][size]; */
}

可选(很可能你需要)你可以传递第二个大小的参数(x)来测试数组边界