为了账号安全,请及时绑定邮箱和手机立即绑定

数组作为形参

当数组作为形参时  比如数组名是arr 参数列表里为什么是int *arr   这个* 的作用是什么

int *arr是不是和int arr[]等价    如果不是在参数列表的话  他们两个又有什么异同

正在回答

3 回答

在参数列表中作为参数用时,在这里他们效果是一样的,都是相当于指针。 注:数组可以看作是常量指针,在声明时便分配内存,数组名就是指向数组第0个元素的指针,不过指向的地址不可变,这样说能明白?

1 回复 有任何疑惑可以回复我~
#1

街边七号 提问者

那个 数组做形参的时候 形参表里为什么要在数组前加一个 * 照你这么说如果不加*的话 形参就不是数组而是数组的第一个元素 是我理解的这样吗
2017-07-05 回复 有任何疑惑可以回复我~
#2

保护我方鲁班七号 回复 街边七号 提问者

首先,你误会了,不加*并不是代表数组中的第一个元素。其次,弱弱的问一句,你学过指针和地址这两个概念吗?最后,int arr[]和int *arr都是代表数组第一个元素的地址,即数组首地址。它们在做数组的形参时,都是等效的,都相当于指向数组首地址的指针。形参接收实参传来的地址,这样,形参数组和实参数组就共占同一段内存单元。函数对形参的操作就等于对实参数组的操作。
2017-07-05 回复 有任何疑惑可以回复我~
#3

街边七号 提问者 回复 保护我方鲁班七号

哦哦 就是说数组做形参直接敲int arr Dehua就是错误的吧 ....指针和地址倒是学过就是没学会才搞现在这么多麻烦啊....
2017-07-05 回复 有任何疑惑可以回复我~
#4

保护我方鲁班七号 回复 街边七号 提问者

大家都认为,c语言之所以强大,以及其自由性,很大部分体现在其灵活的指针运用上。因此,说指针是c语言的灵魂,一点都不为过。在计算机科学中,指针(Pointer)是编程语言中的一个对象,利用地址,它的值直接指向(points to)存在电脑存储器中另一个地方的值。由于通过地址能找到所需的变量单元,可以说,地址指向该变量单元。因此,将地址形象化的称为“指针”。意思是通过它能找到以它为地址的内存单元。数组指针:数组名本身就是一个指针,指向数组的首地址。注意这是一个常数,还有注意与指针数组的区别。(以上摘自指针_百度百科)
2017-07-05 回复 有任何疑惑可以回复我~
#5

街边七号 提问者

非常感谢!
2017-07-05 回复 有任何疑惑可以回复我~
#6

保护我方鲁班七号 回复 街边七号 提问者

你说的对,int arr这样写是错误的。慕课网上的C语言课程并没有涉及指针这一点。我也是在书本上学习的,我是计算机科学与技术专业的学生。
2017-07-05 回复 有任何疑惑可以回复我~
查看3条回复

如果不在参数列表中的话,我以为它们可能是这样的:int *arr为一个int型指针;int arr[]为一个int型一维数组。如果我说的不对请多见谅。

1 回复 有任何疑惑可以回复我~

在参数列表中作为参数用时,数组名代表数组元素的首地址,并不代表数组中的全部元素。因此用数组名作函数实参时,不是把实参数组元素的值传递给形参,而只是将实参数组的首地址传递给形参,形参可以是数组名,也可以是指针变量,他们用来接收实参传来的地址,这样,实参数组和形参数组就共占同一段内存单元。因此改变形参数组元素的值将同时改变实参数组的值,这样做排序时,将要排序的数组传递到函数中,主调函数中的数组也已经排好序了。

1 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消
C++远征之离港篇
  • 参与学习       122670    人
  • 解答问题       493    个

C++扫清通往面向对象的最后一道障碍,将所有知识点融会贯通

进入课程

数组作为形参

我要回答 关注问题
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号