[問題] 指標

看板C_and_CPP作者 (平凡)時間10年前 (2015/06/16 13:07), 編輯推噓5(508)
留言13則, 7人參與, 最新討論串3/5 (看更多)
開發平台(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

06/16 21:22, , 1F
宣告中的*代表這是一個指標
06/16 21:22, 1F

06/16 21:36, , 2F
意義是讓函式可以更改記憶體裡的內容
06/16 21:36, 2F

06/16 21:38, , 3F
06/16 21:38, 3F


06/16 23:47, , 5F
↑ 這篇是你要的嗎?
06/16 23:47, 5F

06/17 00:03, , 6F
就是傳buf的addr進來--> pass by reference
06/17 00:03, 6F

06/17 00:05, , 7F
沒*就是pass by value,會copy一分到function的stack
06/17 00:05, 7F

06/17 00:07, , 8F
裡面
06/17 00:07, 8F

06/17 08:04, , 9F
這裡應該跟 pass by reference 無關
06/17 08:04, 9F

06/17 14:14, , 10F
因為宣告跟expression中的* &意思不同
06/17 14:14, 10F

06/17 14:15, , 11F
宣告 T* : pointer to T, T& : reference to T
06/17 14:15, 11F

06/17 14:16, , 12F
表達式中的 *a : 對 a 取值(dereference), &a : 取址
06/17 14:16, 12F

06/17 21:51, , 13F
你應該先看書, 而不是 google
06/17 21:51, 13F
文章代碼(AID): #1LW1-Hf6 (C_and_CPP)
討論串 (同標題文章)
以下文章回應了本文
問題
10年前, 2015/06/17 07:14
完整討論串 (本文為第 3 之 5 篇):
問題
1
12
10年前, 2015/08/14 12:01
問題
10年前, 2015/06/17 07:14
問題
5
13
10年前, 2015/06/16 13:07
問題
1
28
13年前, 2012/03/17 14:58
問題
1
20
14年前, 2010/11/12 06:10
文章代碼(AID): #1LW1-Hf6 (C_and_CPP)