🌞各位看官:欢迎来到(每日小知识)
🌟建议订阅专栏--> 每日小知识
🌟也欢迎关注小编--> 小峰同学
赶快上🚌跟着小编每天进步一点点,开心学习每一天。
😘如果觉得小编的文章对你有帮助,可以一键三连支持小编
😍你的支持才是小编最大的动力
👻本期重点:一维数组和二位数组传参的本质区别
一维数组的传参
写法有两种
法一/法二:
void mmm (int* str)
{ }
void mmm(int arr[])//这里的[]不能省略但是里面的数字可以省略
{ }
这里两种写法我们通过监视窗口可以看到本质上是一样的,传过去的都是数组首元素的地址。都是地址。
注意:在一般情况下, 数组名都表示首元素的地址, 但是有两个例外:
1,sizeof(arr)时这个为整个数组。
2,&arr的时候
上面两个图片可以看出 一维数组的两种定义方法,本质都是一样的。传过去的都是数组首元素的地址。
二维数组的传参
法一:
这里可以看到传过去的是也是地址不过是第一行的地址,
void mmm(int arr[][5], int row, int col)
{ }
//或者
void mmm(int arr[5][5], int row, int col)
{ }
//行数可以省略但是列数不能省略。这是规定。
这种方法也是最简单的,也是最好理解的。
法二:
void mmm(int (*a)[3], int row, int col)
{ } ;
//这里的int (*a)[3] 本质上是一个数组指针。
//也有书上称为行指针。
这里的数组名也就是首元素的地址,二维数组首元素地址就是第一行元素的地址。
所以二维数组传参本质上就和一位数组一样。一个是直接传,另一个是首元素的地址。