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

时间:2019-01-14 15:10:00

标签: c++ pointers

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

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返回一些未知的整数值.Am我打破了C ++的一些规范。 我在编写此代码时使用了this链接。 我正在使用g ++ 7.3.0

1 个答案:

答案 0 :(得分:5)

colorlist = split(x=as.character(colors$id), f=colors$color)

由于您将其绑定到局部变量的地址,所以指针变得悬空了。