Arrays 用C语言传递二维数组

Arrays 用C语言传递二维数组,arrays,pointers,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++) p

我想通过向函数传递指针来显示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*/
}
#包括
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};
(一);
返回0;
}
void displaymat(int*a)
{
int i;

for(i=0;i
t
的类型为
int**
,它是指向int指针数组的指针

a
的类型为
int*

&t[0][0]
属于
int*
类型


您应该能够调用
displaymat(t[0])
displaymat(t[1])
,和
displaymat(t[2])
int t[3][3]={1,2,3,4,5,6,7,8,9};
是一个一维数组。t[1][2]的值取决于数据是按行主顺序还是按列主顺序存储。你确定这是你想要做的吗?@Icardor My bad,通过正确初始化2D数组,displaymat(t)似乎可以工作。int t[3][3]={1,2,3,4,5,6,7,8,9}到底是什么?那么为什么displaymat(t)会给我一个错误?