任何型態皆可用C++新提出的reference傳進function,array除了使用pointer方式傳進function外,當然也可以使用reference。
當使用pointer傳進function時,compiler只對array的型態做檢查,就算傳進function時指定了array size,compiler也會忽略,但若使用reference,compiler則會對array size做檢查。
1 /**/ /* 2(C) OOMusou 2007 http://oomusou.cnblogs.com 3 4Filename : ArrayReferencePassToFunction.cpp 5Compiler : Visual C++ 8.0 / ISO C++ 6Description : Demo how to use reference array pass to function 7Release : 02/09/2007 1.0 8*/ 9 10 #include < iostream > 11 12 using namespace std; 13 14 void func( int ( & arr)[ 3 ]) { 15 for(int i = 0; i != 3; ++i) { 16 cout << arr[i] << endl;17 }18} 19 20 int main() { 21 int ia[] = { 0, 1, 2};22 func(ia);23}
14行int (&arr)[3],&arr一定要括號,因為[]比&優先權高。 int &arr[3] // 一個array有三個元素,每個元素為int型態的reference
int (&arr)[3] 三個int型態元素array的reference雖然compiler能幫我們檢查array size看似不錯,但須將array size寫死,則減少了程式的彈性,若配合function template,則可處理任意size的array。
See Also
Reference C++ Primer 4th P.240