gpt4 book ai didi

c++ - C++中的引用调用

转载 作者:太空狗 更新时间:2023-10-29 19:47:18 26 4
gpt4 key购买 nike

通过引用调用函数实际上传递了什么?

void foo(int &a,int &b)

当我写作时

foo(p,q)

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

最佳答案

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

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

就是说,实现编译器的人可能会将其描述为“实际传递一个指针”,您知道他们的意思。相比之下,如果 char 变量在调用约定中占用 4 字节堆栈槽,则它们可能会说编译器“实际上正在传递一个 int”。所以这取决于“实际上”的含义。

关于c++ - C++中的引用调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2403924/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com