將array傳進function,在C/C++一直是很重要的課題,在C語言中,array傳進function的是pointer,但array size一直是大問題,除了compiler不做檢查外,可能還得另外傳array size(C#則不必);C++提出reference array和function template後,有更好的方式解決這個C語言的老問題。

reference array讓compiler除了檢查array element型別外,還可以檢查array size,但缺點是array size必須寫死,若透過function template,則array size不必寫死,可以處理任何array size。

 1}


14行array size並沒有寫死,N是個變數,而15行也可以繼續用這個變數作counting,由於function template的typename,我們不只處理任意array size的array,還可處理任意型態的array。

C#會有這個需求嗎?不會!!因為C#的array自帶GetLength() method,可以輕鬆的得到array size,所以不需使用任何特別的技巧處理。

Conclusion
透過reference array和function template,C語言對於array和function的老問題總算得到圓滿的解答。

See Also
(原創) array可以使用reference方式傳進function嗎? (初級) (C++)
(原創) array傳進function該怎麼寫才好? (初級) (C/C++)
(原創) array傳進function該怎麼寫才好? (初級) (C#)
(原創) 如何使用boost::array? (初級) (C++) (boost)

Reference
C++ Primer 4th P.633

相关文章: