我發現這在期末考試:有人可以幫助我理解這一點嗎? INT *&PR
int a = 564;
int* pa = &a;
int *& pr = pa;
cout << *pr;
按照選擇題的答案,代碼是有效的,並顯示的值。
但我對第3行的評估和優先次序感到困惑.C狀態的操作順序*和&具有相同的順序。那麼,它會是int *(&pr)
?這怎麼可以用文字來描述?
謝謝。
我發現這在期末考試:有人可以幫助我理解這一點嗎? INT *&PR
int a = 564;
int* pa = &a;
int *& pr = pa;
cout << *pr;
按照選擇題的答案,代碼是有效的,並顯示的值。
但我對第3行的評估和優先次序感到困惑.C狀態的操作順序*和&具有相同的順序。那麼,它會是int *(&pr)
?這怎麼可以用文字來描述?
謝謝。
這是對指針的引用。在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!
}
第三行定義了一個指針引用(或者對指針的引用,如果需要的話)。將它指定給一個指針使pr
實際上成爲pa
的別名,並在評估時指向pa
指向的位置,即a
。
在變量的聲明,*
和&
沒有運營商的意義,所以優先級沒有意義在這裏。
謝謝!這很有幫助。 – MercurialMadnessMan 2010-12-13 00:34:01
第三行創建一個指向int
的指針的引用(讀取:別名)。如果您要將pr
設置爲0,則pa
也將等於0(反之亦然)。
有趣。我在C中使用了指針指針,所以這個類比對理解語法非常有用。謝謝! – MercurialMadnessMan 2010-12-13 00:32:53