在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”.所以这取决于“实际”应该是什么意思. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |