Item06. Array Formal Arguments
谨慎使用
------------------------------------------
退化(decay):数组自动地转化为指向其首元素的指针
---------------------------------------------
1、当用数组作为函数的形参时,数组的边界信息就丢失了,所以无需指定数组的大小。
void average( int ary[] ); //int* ary
2、若要显式地指定形参数组的大小,要使用引用
void average( int (&ary)[12] ); //此时只能传入大小为12的int数组
更通用地,可以使用模板:
template <int n>
void average( int (&ary)[n] );
3、传统方法
void average_n( int ary[], int size );
4、使用STL容器,如vector
void average(std::vector<int> ary);
5、多维数组形参与一维数组形参类似,只不过是数组退化为指向数组的数组.
void process( int ary[][20] ); //int (*ary)[20]
template <int n, int m>
inline void process( int (&ary)[n][m] )
{ process_2d( &ary[0][0], n, m ); }