C语言二维数组传参不是不可以用一级指针接收,哪位大佬看看我下面的代码为啥可以?
#include<stdio.h>
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;
}
谁跟你说的二维数组传参不能用一维数组接收?C语言里面的高维数组其实都是1维数组的语法糖。
这是个 C++ 的例子,但把定义放到前面就是 C,你能看到1维数组跟多维数组之间是可以随意转换的。