下面是我利用一级指针传参并打印二维数组
#include
void print(int* p, int x, int y)
{
int i = 0;
for (i = 0; i < x*y; i++)
{
if (i % 5 == 0 && i != 0)
{
printf("\n");
}
printf("%d ", *(p + i));
}
}
int main()
{
int arr[3][5] = { {1,2,3,4,5},{2,3,4,5,6},{3,4,5,6,7} };
print(arr,3,5);
return 0;
}
我理解的你这个传参应该是把数组的首地址强转成了int *来使用,因为你二维数组全是int类型的值,在内存中顺序存储,所以你将首地址强转为int *然后逐个访问也可以,简单点讲就是你把a[3][5]硬搞成a[15]了,差不多这个意思,你这样写编译器正常得给个警告说你参数不匹配
可能是编译器不一样吧。VS2010下是会报错的