看板 C_and_CPP 關於我們 聯絡資訊
開發平台(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
Raymond0710: http://goo.gl/sNV1SX 06/16 21:38
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