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

作者: noodleT (麵T)   2016-03-08 21:34:09
如標題 板模 func( T (&arr) [N])
請問有辦法解釋電腦是
如何取得陣列大小?
或我們是傳了什麼資料進去嗎?
&、[],分別做了哪些動作?
第二個問題:
class myclass{
float m[9];
void test(){
float m2[9];
func(m);//無法編譯過
func(m2);//ok
}
}
有查到這種板模只能傳入
編譯前就決定好陣列大小的陣列,
但為什麼無法傳入成員變數?
作者: Caesar08 (Caesar)   2016-03-08 21:49:00
第一次看到有人說板模,不都是說模板嗎?而且你第二份code沒問題啊 http://ideone.com/5p7E4Rhttp://ideone.com/XAlsgK另外,T就是array的型態,()跟運算的優先順序有關N是array的size,&就是reference沒有&,當你傳array的時候,他會decay成pointer
作者: noodleT (麵T)   2016-03-08 22:15:00
第二個問題我的確編譯不過BCB6先不管T,arr 是指標,指標取&是?,然後又取陣列引索[n]
作者: Caesar08 (Caesar)   2016-03-08 22:37:00
不對。你寫arr是指標,你寫&arr是矩陣你查一下甚麼是decay應該就知道了
作者: james732 (好人超)   2016-03-09 01:32:00
板模是台語嗎?XD
作者: noodleT (麵T)   2016-03-09 06:44:00
板模不也挺恰當的嗎?可以灌入不同型態的變數~
作者: bibo9901 (function(){})()   2016-03-09 15:17:00
&是reference 不是取址T (&arr)[N] 意思是 arr is a reference to an array ofN elements of type T

Links booklink

Contact Us: admin [ a t ] ucptt.com