2012-04-15 74 views

回答

4

在C中,&是地址運算符。因此,您不需要像第一次打電話那樣傳遞i的副本,而是通過i&i的地址,這意味着該功能可以直接對其進行修改。

功能將是這樣的:

void doSomethingWith (int *var); 

這意味着它需要一個指針(東西保存地址)爲一個整數(在這種情況下,i)。然後,直接修改i,該功能可以這樣做:

*var = 5; 

這是對其操作,它給你什麼實際存儲在該地址。此呼叫將爲存儲在您通過& i的內存位置分配5。

任何C教科書都應該在講解指針時詳細解釋這一點。

+0

謝謝您花時間。這就是我的想法。 – harveytech 2012-04-15 20:17:45

+0

因此,通過使用該解引用操作符,您將獲得該內存位置的值,從而節省一點內存(整數需要的字節量)? – harveytech 2012-04-15 20:49:10

+0

解引用操作符會提取存儲在您提供的內存位置的內容。一個指針保存一個內存位置。如果你要輸出'var',你會看到類似0x22ff44的東西:它所持有的地址。 '* var = 5'在* 0x22ff44中存儲了一個5 *(或者我的地址),所以'i'將等於5. – chris 2012-04-15 20:51:53

2

在我的第一個要傳遞的價值。在第二步中,您將傳遞變量i的內存地址。

看看有關指針和那種東西的this視頻。

+0

謝謝fbemardo – harveytech 2012-04-15 20:10:07

+1

+1指針與Binky樂趣 – 2012-04-15 20:10:33

+0

@KenThomases Binky實際上與我的一個課程「操作系統」有聯繫。偉大的視頻。 – fbernardo 2012-04-15 20:13:30

0
  • 傳遞的 'i' - >傳i的值(存儲位置內的值)
  • 傳 '& I' - >傳遞一個參考的 'i' 的
的存儲器位置
相關問題