作者GooLoo (平凡)
看板C_and_CPP
標題[問題] 指標
時間Tue Jun 16 21:07:27 2015
開發平台(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):
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 111.251.225.235
※ 文章網址: https://www.ptt.cc/bbs/C_and_CPP/M.1434460049.A.A46.html
→ azureblaze: 宣告中的*代表這是一個指標 06/16 21:22
推 Raymond0710: 意義是讓函式可以更改記憶體裡的內容 06/16 21:36
→ EdisonX: ↑ 這篇是你要的嗎? 06/16 23:47
推 arthur104: 就是傳buf的addr進來--> pass by reference 06/17 00:03
推 arthur104: 沒*就是pass by value,會copy一分到function的stack 06/17 00:05
→ arthur104: 裡面 06/17 00:07
→ Feis: 這裡應該跟 pass by reference 無關 06/17 08:04
推 BlazarArc: 因為宣告跟expression中的* &意思不同 06/17 14:14
→ BlazarArc: 宣告 T* : pointer to T, T& : reference to T 06/17 14:15
→ BlazarArc: 表達式中的 *a : 對 a 取值(dereference), &a : 取址 06/17 14:16
→ descent: 你應該先看書, 而不是 google 06/17 21:51