c++ - C++ 中的指针和引用作为参数

标签 c++

这到底是做什么的?

void insertar (struct pila *&p);

使用 *& 与仅像这样声明方法相比有什么优势:

void insertar (struct pila *p);

或者像这样:

void insertar (struct pila &p);

我知道 * 是指针,& 是地址,但两者都在方法签名中?

有什么好处?

它们的用途是什么?

它有什么作用?

最佳答案

您混淆了 & 的两种含义。在表达式中使用时,它是运算符的“地址”。也就是说,如果您有一个 int x; 并且执行了 &x,您将获得 x 的地址。但是,在一个类型中,& 表示它是一个引用类型。这是两个完全不同的概念。

以下采用pila,将其复制到函数中。修改 p 只会影响函数内部的复制:

void insertar(pila p);

下面通过引用获取一个pila,因此函数内部的对象与外部的对象相同。在此处修改 p 将修改传入的对象:

void insertar(pila& p);

以下采用指向 pila 的指针,将指针复制到函数中。修改指针只会在函数内部产生影响。它指向的对象与外部相同:

void insertar(pila* p);

以下通过引用获取指向 pila 的指针,因此函数内部的指针与外部的指针相同。如果您修改指针,您也会修改外部指针:

void insertar(pila*& p);

关于c++ - C++ 中的指针和引用作为参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14913300/

相关文章:

c++ - 如何以编程方式从 IHTMLDocument 获取 documentMode?

c++ - Qt - 用第二个线程更新主窗口

c++ - 字符5:错误:控件可能到达非空函数的结尾

c++ - rmmod 当 char dev 打开时

c++ - 将 ListView 控件滚动到特定项目

c++ - 将 lambda 作为参数注入(inject)到模板方法中

c++ - uint64_t 错误地达到了 18,446,744,071,590,568,320

c++ - 模板函数重载决议

c++ - 在不复制代码的情况下从工厂实例化对象(例如炮塔)的草图(即原型(prototype))

c++ - 在c中访问多维数组