之前结论:数组作为参数时会退化为一个指针
但是为什么呢?
1.C语言发明之初是为了编写操作系统,是以值拷贝的方式传递参数
2.当向函数传递数组时:
-将整个数组拷贝一份传入参数 ,不可取
-将数组名视为常量指针传递数组首元素的地址
C语言最初目的
1.整体拷贝效率太低
2.参数位于栈上,太大的拷贝会导致栈溢出
二维数组参数:
- 二维数组参数同样存在退化的问题
- 二维数组可以看做一维数组
- 二维数组中的每一个元素是一维数组
- 二维数组参数中的第一维的参数可以省略
void f(int a[5]) <===> void f(int a[]) <===> void f(int* a)
void g(int a[3][3]) <===> void g(int a[][3]) <===> void g(int (*a)[3])
总结了一个等价关系(牢牢记住&