2012-05-28 57 views
0

我從一個解釋排序的網站得到了這個。但我無法理解*(int*)x。如何在C程序中使用像這樣讀取變量x?它是指針的指針或是不同?任何幫助表示讚賞。謝謝!如何讀取變量*(int *)x?

+0

http://www.cdecl.org – Jon

+0

@Jon無用的建議,因爲這不是聲明... – Lundin

回答

3

你可以到那裏,如果你把它分解了,第一:

(int*)x 

這就引起xint*,指針的int。我認爲在這種情況下,xint,所以在x數被解釋爲指針。

在下一步驟:

*(int*)x 

*取消引用一個指針,在此情況下,只是澆鑄int。結果是int

簡而言之:將int解釋爲指針並獲取它指向的值。

+0

聲明「將int解釋爲指針並獲取它指向的值」。有點誤導,因爲你不知道'x'的原始類型。 – nhahtdh

+0

這就是爲什麼我說我假設'x'是一個'int'。 – Femaref

0

您先將x轉換爲整型指針,然後將其解引用。

0

你可以想想*用C這樣的:

  • 與類型(例如,int)這意味着指針
  • 與值(例如,x)這意味着非關聯

所以:

  • (int*)x是指向int
  • *y從存儲器ADDRES的值所指向的y
0

相同的答案其他具有不同的解釋。 嘗試解釋此 - int * ptr =(int *)x; int y = * ptr;