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