Item06.数组形参 Array Formal Arguments

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 ); }

原文地址:https://www.cnblogs.com/aiwz/p/6333264.html