加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

在C中通过引用打电话

发布时间:2020-12-16 10:16:26 所属栏目:百科 来源:网络整理
导读:通过引用函数实际传递的是什么? void foo(int a,int b) 我写的时候 foo(p,q) 实际传递给函数的是什么.它是p和q的地址吗? 解决方法 实际传递给函数的是引用.命名参数b成为参数对象q的同义词. 编译器可能如何实现这一点,调用者在调用之前将q的地址放在堆栈上
通过引用函数实际传递的是什么?

void foo(int &a,int &b)

我写的时候

foo(p,q)

实际传递给函数的是什么.它是p和q的地址吗?

解决方法

实际传递给函数的是引用.命名参数b成为参数对象q的同义词.

编译器可能如何实现这一点,调用者在调用之前将q的地址放在堆栈上或寄存器中,并且被调用者使用该值来实现对b的所有访问.但是将它描述为“实际传递”一个指针可能会产生误导,因为参数传递是C语言级别的概念,并且在该级别它与传递指针的概念不同.例如,当您传递指针时,您可以传递空指针,但是当您传递引用时,您无法(有效地).所以说他们是一回事是错误的.

也就是说,实现编译器的人可能会将其描述为“实际传递指针”,并且您知道它们的含义.为了比较,如果char变量占用调用约定中的4字节堆栈槽,则可能会说编译器“实际传递了一个int”.所以这取决于“实际”应该是什么意思.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读