使用 int*&通过引用传递指针会导致奇怪的问题

Passing pointers by reference using int*& is causing odd problems

本文关键字:问题 指针 int 引用 使用      更新时间:2023-10-16

我正在编写以下内容以通过引用传递指针。但是,当我尝试取消引用指针时,它会给出意想不到的值。

void passPointers(int* &a){
    int p = 5;
    a = &p;
}
int main(){
  int x = 3;
  int *y= &x;
  cout<<"y is "<<y<<" *y is "<<*y<<endl;
  passPointers(y);
      
  //cout<<"y is "<<y<<" *y is "<<*y<<endl;//line a
  cout<<" *y is "<<*y<<endl;//It returns 5
  return 0;
}

如果我取消注释行 a,它返回 y 的地址,*y 返回一些未知的整数值。我是否违反了一些C++规范。我在编写此代码时使用了此链接。我正在使用g ++ 7.3.0

void passPointers(int* &a){
    int p = 5;
    a = &p;
} // p dies here

指针变得悬空,因为您将其绑定到局部变量的地址。