栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

C语言----一维数组和二位数组传参的最本质区别

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

C语言----一维数组和二位数组传参的最本质区别

各位看官:欢迎来到(每日小知识)

建议订阅专栏--> 每日小知识

也欢迎关注小编--> 小峰同学

赶快上跟着小编每天进步一点点,开心学习每一天。

如果觉得小编的文章对你有帮助,可以一键三连支持小编

你的支持才是小编最大的动力

本期重点:一维数组和二位数组传参的本质区别

一维数组的传参 写法有两种
法一/法二:
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] 本质上是一个数组指针。
//也有书上称为行指针。

这里的数组名也就是首元素的地址,二维数组首元素地址就是第一行元素的地址。

所以二维数组传参本质上就和一位数组一样。一个是直接传,另一个是首元素的地址。

感谢各位看官,,如果觉得对你有所帮助请 一键三连  多谢!!!!!

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/1022252.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号