有人能帮助我理解这个吗? int *& PR

时间:2010-12-12 23:45:57

标签: c++ variables pointers

我在期末考试中发现了这一点:

int a = 564;
int* pa = &a;
int *& pr = pa;
cout << *pr;

根据多项选择答案,代码有效,并显示a。

的值

但是我对第3行的评估和优先级感到困惑.C的操作顺序是*和&amp;有相同的订单。那么,它会int *(&pr)吗?如何用文字描述?

谢谢。

3 个答案:

答案 0 :(得分:5)

第三行定义指针引用(或指针的引用,如果需要)。将其分配给指针会使pr实际上成为pa的别名,并且在评估时,它会指向pa指向的位置,即a

在变量声明中,*&没有运算符的含义,因此优先级在这里没有意义。

答案 1 :(得分:3)

它是指针的引用。在C中,您可以将其表示为指针的指针。

你可以这样写:

// C++ style
void update_my_ptr(int*& ptr) { ptr = new int[1024]; }

// C style
void update_my_ptr_c(int **ptr) { *ptr = malloc(1024 * sizeof(int)); }

int main()
{
   int *ptr;
   update_my_ptr(ptr);
   // Here ptr is allocated!

}

答案 2 :(得分:1)

第三行创建指向int的指针的引用(读:别名)。如果您将pr设置为0,pa也将等于0(反之亦然)。