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

关于指针的引用,有疑惑

关于指针的引用,有疑惑

C++
103945962 2018-05-08 14:14:04
为什么count不用指针作为参数,而arr必须要用指针作为参数。arr1的引用为什么不是getMaxOrMin(&arr1, 4, isMax)
查看完整描述

2 回答

已采纳
?
onemoo

TA贡献883条经验 获得超454个赞

你没搞懂的好像是“数组传参”:

在 C++ 中,当想要向函数中传入数组时,数组在传参时会隐式转型为指向其首元素的指针,函数实际上得到的是这个指针。所以函数声明中的第一个形参要声明为 int 指针类型。

main 函数中的 getMaxOrMin(arr1, ...) 这里就是函数调用,这里传入数组直接写数组名就可以了。


这里发生的只是数组传参,和“引用”没有关系。 不要搞混了,& 这个符号不是只有“引用”这一个含义:

当声明一个变量时,变量名前有 & 修饰表示这个变量是“引用类型”。

而在使用变量时,前面的 & 是“解引用(或称取地址)运算符”,用来得到该变量的地址。

所以不要看到 & 就只想“引用”。


上面解释了为什么“arr必须要用指针作为参数”,那么“为什么count不用指针作为参数”:

函数的这第二个参数,你打算传入整形值,那么形参就声明为对应的 int 就可以了。


你最好去梳理下关于形参的一些知识:普通类型形参、指针类型形参、引用类型形参,理解下它们的作用和意义。你好像把这些搞混了。

查看完整回答
反对 回复 2018-05-18
?
AAnonymous

TA贡献62条经验 获得超31个赞

你这里`&`不是引用,是取地址符。即使你函数声明为引用,调用时传实参也不用加 `&`


所以,Google C++ Code Style 里建议建议不要使用非const引用形参,阅读时容易产生歧义

查看完整回答
反对 回复 2018-05-18
  • 2 回答
  • 0 关注
  • 974 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信