这到底是做什么的?
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/