【发布时间】:2020-03-10 07:33:27
【问题描述】:
考虑以下函数定义:
int foo(int a);
int bar(int *b);
int main()
{
int *ptr = new int(1);
foo(*ptr);
bar(ptr);
}
我需要帮助来解决我的一些困惑。
- 当控件在
foo()里面时,是a == *ptr && a == 1吗? - 当控件在
bar()里面时,是b == ptr吗? - 当控件在
bar()里面时,是&b == &ptr吗? - 如果您对 Q.3 的回答是错误的,那么在 C++ 中是否有任何作为引用调用的东西?看起来指针仍然是按值传递的,但我们现在将
ptr的内容(到new int(1)的内存地址)存储在另一个变量中。这是因为在这种情况下,ptr 被复制了,就像我们在 Q.1 中遇到的情况一样,但整数值恰好是内存地址?
【问题讨论】:
标签: c++ pointers pass-by-value