[問題] 怎麼解釋 T (&arr) [N]

看板C_and_CPP (C/C++)作者 (麵T)時間10年前 (2016/03/08 21:34), 10年前編輯推噓0(0016)
留言16則, 4人參與, 最新討論串1/1
如標題 板模 func( T (&arr) [N]) 請問有辦法解釋電腦是 如何取得陣列大小? 或我們是傳了什麼資料進去嗎? &、[],分別做了哪些動作? 第二個問題: class myclass{ float m[9]; void test(){ float m2[9]; func(m);//無法編譯過 func(m2);//ok } } 有查到這種板模只能傳入 編譯前就決定好陣列大小的陣列, 但為什麼無法傳入成員變數? -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 110.26.20.132 ※ 文章網址: https://www.ptt.cc/bbs/C_and_CPP/M.1457444051.A.816.html ※ 編輯: noodleT (110.26.20.132), 03/08/2016 21:36:20

03/08 21:49, , 1F
第一次看到有人說板模,不都是說模板嗎?
03/08 21:49, 1F

03/08 21:49, , 2F
而且你第二份code沒問題啊 http://ideone.com/5p7E4R
03/08 21:49, 2F

03/08 21:50, , 3F

03/08 21:50, , 4F
另外,T就是array的型態,()跟運算的優先順序有關
03/08 21:50, 4F

03/08 21:51, , 5F
N是array的size,&就是reference
03/08 21:51, 5F

03/08 21:52, , 6F
沒有&,當你傳array的時候,他會decay成pointer
03/08 21:52, 6F

03/08 22:15, , 7F
第二個問題我的確編譯不過
03/08 22:15, 7F

03/08 22:16, , 8F
BCB6
03/08 22:16, 8F

03/08 22:26, , 9F
先不管T,arr 是指標,指標取&是?,然後又取陣列引索[n]
03/08 22:26, 9F

03/08 22:37, , 10F
不對。你寫arr是指標,你寫&arr是矩陣
03/08 22:37, 10F

03/08 22:37, , 11F
你查一下甚麼是decay應該就知道了
03/08 22:37, 11F

03/09 01:32, , 12F
板模是台語嗎?XD
03/09 01:32, 12F

03/09 06:44, , 13F
板模不也挺恰當的嗎?可以灌入不同型態的變數~
03/09 06:44, 13F

03/09 15:17, , 14F
&是reference 不是取址
03/09 15:17, 14F

03/09 15:18, , 15F
T (&arr)[N] 意思是 arr is a reference to an array of
03/09 15:18, 15F

03/09 15:19, , 16F
N elements of type T
03/09 15:19, 16F
文章代碼(AID): #1MtjJJWM (C_and_CPP)
文章代碼(AID): #1MtjJJWM (C_and_CPP)