看板 C_and_CPP 關於我們 聯絡資訊
網上找到的做法是用reference搭配template來取得 https://ideone.com/hSXrOZ 我試著改用pointer做做看,但無法通過編譯 不如說為什麼reference就能通過編譯? 查到一篇類似的問題 https://tinyurl.com/3wvr2mze 難道reference裡面有存陣列的型別和長度, 而pointer只是單純放記憶體位置嗎? 還麻煩各位高手解惑,謝謝。 -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 36.229.32.19 (臺灣) ※ 文章網址: https://www.ptt.cc/bbs/C_and_CPP/M.1624718333.A.2F7.html
bhbbbbb: 可以參考置底第12誡 06/27 00:01
我想問的是,ref多了pointer什麼東西才能這麼做 12誡沒有說明 ※ 編輯: ko27tye (36.229.32.19 臺灣), 06/27/2021 00:21:28
KaryuuIssen: 錯誤的版本要傳入陣列位址才行 這裡不能靠陣列退化 06/27 00:28
KaryuuIssen: 成指標 因為簽名不合 06/27 00:28
感謝!重點是signature不符合 fail_version(&arr) 這樣call就可以了 ※ 編輯: ko27tye (36.229.32.19 臺灣), 06/27/2021 00:43:24
LPH66: 順便提一下, reference 確實在某種意味上「有存」型別長度 06/27 03:16
LPH66: 但它不是存在程式執行的記憶體裡, 而是編譯器會記著它 06/27 03:17
LPH66: 這也是為什麼型別簽名會被編譯器檢查出不合的部份原因 06/27 03:17
ko27tye: 學到了,感謝分享! 06/27 07:02