【问题标题】:Pointers and input in user define functions用户定义函数中的指针和输入
【发布时间】:2020-07-13 11:48:33
【问题描述】:

在此我通过引用调用了add() 函数,我怀疑在这种情况下它如何发送输入。我的意思是它使用 &p = a 并且&(any variable) 代表变量的地址吗?

#include<iostream>
using namespace std;
void add(int &p)
{
    p++;
}
int main()
{
    int a=55;
    add(a);
    
    cout<<a;
    
    return 0;
}

【问题讨论】:

  • func(int &amp;p) 表示通过引用传递,在这种情况下,使用对传递的原始变量的引用并且不进行复制。如果您愿意cout &lt;&lt; &amp;a,您将获得内存地址。
  • @interjay 编译就好了
  • &amp; 在 C++ 中用于多种不同的目的。在 &amp; 类型中表示引用,例如int&amp; p 表示 p 是对整数的引用。在表达式中&amp; 表示地址,例如&amp;a 将是 a 的地址。
  • @Waqar 那是因为问题被编辑了。

标签: c++ pointers reference


【解决方案1】:

&(any variable) 表示变量的地址吗?

是的。

什么是引用?

简单地说,引用只是别名。这意味着p 只是参考a 的另一种方式。您对pa 所做的任何更改都将反映在另一个中。但是,您不能将引用变量重新分配给其他东西。引用只需初始化一次,然后重复使用。

例子:

int main()
{
    int a=55;
    int &p = a; //p is referring to a
    p++;        // a = 56, p = 56
    a = 100;    // a = 100, p = 100
    
     //address of both are same as well
    cout << &a << '\n';
    cout << &p << '\n';
    
    int x = 33;
    p = &x; // error
    &p = x; // error, can't change
    p = x; //ok, but now a = 33, p = 33, (p is not referring to x)
}

【讨论】:

    猜你喜欢
    • 2018-01-28
    • 1970-01-01
    • 1970-01-01
    • 2022-09-23
    • 2014-05-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多