在C中传递2D数组

时间:2013-12-04 18:09:45

标签: arrays pointers

我希望通过将指针传递给函数来显示2D数组的元素。我成功地为1D阵列做了这件事。

#include<stdio.h>

void displaymat(int *a);

int main()
{
  int a[3]={0,1,2};
  int t[3][3]={1,2,3,4,5,6,7,8,9};

  displaymat(a);

  return 0;
}

void displaymat(int *a)
{
  int i;

  for(i=0;i<3;i++)
    printf("%d\n",a[i]);/*works for single dimensional array*/
}

但是当我使用displaymat(t)时,它会给出一个错误,指出指针类型不兼容。 但是displaymat(&t[0][0])似乎有效。为什么在1D和2D数组之间传递指针有明显区别?

1 个答案:

答案 0 :(得分:2)

t的类型为int**,它是指向int指针数组的指针。

a的类型为int*

&t[0][0]的类型为int*

您应该可以致电displaymat(t[0])displaymat(t[1])displaymat(t[2])