[問題] 指標

作者: GooLoo (平凡)   2015-06-16 21:07:27
開發平台(Platform): (Ex: VC++, GCC, Linux, ...)
額外使用到的函數庫(Library Used): (Ex: OpenGL, ...)
問題(Question):
請問一下
*與&最大不同是
*a : a的內容 &a : a的位址
最近在看一份範例程式,它用了很多指標,
我想瞭解程式內容,並用自己看得懂的方式重寫
其中,
uint16_t moved_perm(uint8_t *buf)
{
uint16_t plen;
plen=fill_a(buf,0,PSTR("123"));
return(plen);
}
*buf =>動作不是很懂 ,平常寫都沒星號,
有人可以舉例說明, 差異跟應該會得到的結果嗎?
我google過, 多半看不懂, 或是只教*與&的不同,
針對函式中的參數有星號沒有特別的說明
可否請高手指點, 這種參數內有指標的意義
另外buf應該是一個陣列?那可以帶到函式參數內?
謝謝
餵入的資料(Input):
預期的正確結果(Expected Output):
錯誤結果(Wrong Output):
程式碼(Code):(請善用置底文網頁, 記得排版)
補充說明(Supplement):
作者: azureblaze (AzureBlaze)   2015-06-16 21:22:00
宣告中的*代表這是一個指標
作者: Raymond0710 (雷門)   2015-06-16 21:36:00
意義是讓函式可以更改記憶體裡的內容http://goo.gl/sNV1SX
作者: EdisonX (卡卡獸)   2015-06-16 23:47:00
作者: arthur104 (arthur)   2015-06-17 00:03:00
就是傳buf的addr進來--> pass by reference沒*就是pass by value,會copy一分到function的stack裡面
作者: Feis (永遠睡不著 @@)   2015-06-17 08:04:00
這裡應該跟 pass by reference 無關
作者: BlazarArc (Midnight Sun)   2015-06-17 14:14:00
因為宣告跟expression中的* &意思不同宣告 T* : pointer to T, T& : reference to T表達式中的 *a : 對 a 取值(dereference), &a : 取址
作者: descent (「雄辯是銀,沉默是金」)   2015-06-17 21:51:00
你應該先看書, 而不是 google

Links booklink

Contact Us: admin [ a t ] ucptt.com