回答
在C中,&是地址運算符。因此,您不需要像第一次打電話那樣傳遞i
的副本,而是通過i
或&i
的地址,這意味着該功能可以直接對其進行修改。
功能將是這樣的:
void doSomethingWith (int *var);
這意味着它需要一個指針(東西保存地址)爲一個整數(在這種情況下,i
)。然後,直接修改i
,該功能可以這樣做:
*var = 5;
這是對其操作,它給你什麼實際存儲在該地址。此呼叫將爲存儲在您通過& i的內存位置分配5。
任何C教科書都應該在講解指針時詳細解釋這一點。
在我的第一個要傳遞的價值。在第二步中,您將傳遞變量i的內存地址。
看看有關指針和那種東西的this視頻。
謝謝fbemardo – harveytech 2012-04-15 20:10:07
+1指針與Binky樂趣 – 2012-04-15 20:10:33
@KenThomases Binky實際上與我的一個課程「操作系統」有聯繫。偉大的視頻。 – fbernardo 2012-04-15 20:13:30
- 傳遞的 'i' - >傳i的值(存儲位置內的值)
- 傳 '& I' - >傳遞一個參考的 'i' 的
- 1. 將參數傳遞給dpkg -i?
- 2. *(matrix1 + i)和* matrix1 [i]之間的區別?
- 3. Javascript:Forloop i ++和(i + 1)之間的區別
- 4. i ++和++ i有什麼區別?
- 5. --i和i--有什麼區別?
- 6. i == 0和0 == i有區別嗎?
- 7. 就原子性而言,i ++和i = i + 1之間的區別
- 8. i = i + j有什麼區別;和i + = j;在C語言?
- 9. 將參數傳遞給bash函數時,「$ @」和「$ *」之間的區別
- 10. printf(「%d」,i ++)和i ++之間有什麼區別;的printf( 「%d」,i)的?
- 11. PHP中的++ $ i和$ i ++有什麼區別?
- 12. ++ i和i + 1在javascript中的區別是什麼
- 13. I/O端口和I/O內存之間的區別
- 14. 從任何角度來看,++ i和i + = 1之間的區別
- 15. * x = i和x =&i之間的區別是什麼
- 16. int p = *(int *)i和int p = *(int *)&i之間的區別
- 17. 你如何將數組傳遞給像這樣的函數:void fooboo(char array [i]);
- 18. i-vector和d-vector之間的區別
- 19. 在這個循環中,++ i和i ++有區別嗎?
- 20. ++ i和i ++在JavaScript中有什麼區別
- 21. 爲什麼在for循環中「++ i」和「i ++」有什麼區別?
- 22. C中i--和i-1有什麼區別?
- 23. ruby中/ \ p {Alpha}/i和/ \ p {L}/i有什麼區別?
- 24. 如何將params對象[i]傳遞給C#中的模板函數#
- 25. 將全局I/O參數傳遞給Java線程
- 26. 與%i和%li有什麼區別?
- 27. makefile中-I和-L有什麼區別?
- 28. phpinfo();有什麼區別?和php -i?
- 29. 將指針傳遞給函數並將指針的引用傳遞給函數有什麼區別?
- 30. Increment ++ i,i ++和i + = 1
謝謝您花時間。這就是我的想法。 – harveytech 2012-04-15 20:17:45
因此,通過使用該解引用操作符,您將獲得該內存位置的值,從而節省一點內存(整數需要的字節量)? – harveytech 2012-04-15 20:49:10
解引用操作符會提取存儲在您提供的內存位置的內容。一個指針保存一個內存位置。如果你要輸出'var',你會看到類似0x22ff44的東西:它所持有的地址。 '* var = 5'在* 0x22ff44中存儲了一個5 *(或者我的地址),所以'i'將等於5. – chris 2012-04-15 20:51:53