我希望通过将指针传递给函数来显示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数组之间传递指针有明显区别?
答案 0 :(得分:2)
t
的类型为int**
,它是指向int指针数组的指针。
a
的类型为int*
&t[0][0]
的类型为int*
。
您应该可以致电displaymat(t[0])
,displaymat(t[1])
和displaymat(t[2])