int x = 4;
int* q = &x; // Is it always equivalent to int *q = &x; ?
cout << "q = " << q << endl; // output: q = 0xbfdded70
int i = *q; // A
int j = *(int*)q; // B, when is this necessary?
cout << "i = " << i << endl; // output: i = 4
cout << "j = " << j << endl; // output: j = 4
我的問題是A行和B行是什麼,以及爲什麼輸出都是4?指針上的這個操作是如何工作的?
是'*(INT *)問;'必要的我在某些情況下?我想不出一個,但想知道是否有這種可能性。 – qazwsx 2011-12-30 16:45:56
'(int *)q'的意思是「不管q是什麼,我想把它當作一個指向int的指針」。當你想要使用數據的位佈局做技巧時,這很有用。而且,C語言中的程序通常會將指針實際指向的內容隱藏起來(通過將其指向(void *))。 – 2011-12-30 17:26:12
所以用最簡單的術語來說,如果'q'已經不是**或'int *','(int *)q'將是必要的。 – 2011-12-30 17:30:02