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

指针变量被直接调用

*arr是指针变量,但没说是数组类型的,为什么函数在调用时直接就可以把参数 
arr1[] 数组变量 传递过去

http://img1.sycdn.imooc.com//560360ad0001650305070394.jpg

正在回答

2 回答

getMaxOrMin函数的第一个参数arr是int指针,并不是数组(其实是一样的,见回复的最后一段)。将参数声明为int数组要这样写 int arr[]。 (如果写成 int *arr[] 的话,是声明了一个int指针的数组)

你是不是说:

另有一个数组,假设为 int a[3];

调用函数时是这样传参的: getMaxOrMin(a, ...) ?  为什么声明第一个参数为指针,却传入了一个数组名??

这样传参数是正确的。

如之前所说:数组在作右值时会自动转换为指向其首元素的指针。用数组名传参数就是把数组作为右值,所以函数得到的就是指向数组第一个元素的指针,可以和函数声明匹配上。

还有,在声明函数时,就算将arr参数声明为数组(如写成int arr[]),编译器还是会将其当作指向元素类型的指针。就是说对函数来说,数组参数就等于是指针!  故而,把arr写成数组形式时也无需在[]中写上数组大小,写了也没有作用,就是因为函数会把它当成指针。

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

爱3 提问者

谢谢!
2015-09-26 回复 有任何疑惑可以回复我~

数组在作右值时会自动转换为指向其首元素的指针。传数组参数时就是用作右值。

函数的参数声明为指针的话,也会将其视为指针。

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

爱3 提问者

*arr在被作为形参是早就定义为数组类型了,是吗?
2015-09-23 回复 有任何疑惑可以回复我~
#2

onemoo 回复 爱3 提问者

最好还是把代码写出来。 函数原型是什么? 如何调用的?
2015-09-23 回复 有任何疑惑可以回复我~
#3

爱3 提问者 回复 onemoo

代码在问题中,就那个函数的参数是*arr,但若要是数组类型不是应该为*arr[]
2015-09-24 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消
C++远征之起航篇
  • 参与学习       291032    人
  • 解答问题       760    个

C++亮点尽在其中,本课程是在C语言基础上的一个延伸,得以升华

进入课程

指针变量被直接调用

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信