Bru*_*uce 3 c++ reference pass-by-reference
通过引用函数实际传递的是什么?
void foo(int &a,int &b)
Run Code Online (Sandbox Code Playgroud)
我写的时候
foo(p,q)
Run Code Online (Sandbox Code Playgroud)
实际传递给函数的是什么.它是p和q的地址吗?
实际传递给函数的是引用.命名参数b成为参数对象的同义词q.
编译器可能如何实现这一点,调用者在调用之前将地址q放在堆栈上或寄存器中,并且被调用者使用该值来实现对所有访问的访问b.但是将它描述为"实际传递"指针可能会产生误导,因为参数传递是C++语言级别的概念,并且在该级别它与传递指针的概念不同.例如,当您传递指针时,您可以传递空指针,但是当您传递引用时,您无法(有效地).所以说他们是一回事是错误的.
也就是说,实现编译器的人可能会将其描述为"实际传递指针",并且您知道它们的含义.为了比较,如果char变量占用调用约定中的4字节堆栈槽,则可能会说编译器"实际传递了一个int".所以这取决于"实际"应该是什么意思.