C++如何写一个函数,得到一个数组的长度呢?
size_t GetArrayLength(int Array [])
{
return sizeof(Array)/sizeof(Array[0]); //传进来的Array已经退化成一个指针了
}这种方法是不行的
正解如下图:
#include <iostream>
using namespace std; template <typename Type, size_t N>
inline size_t GetArrayLength(const Type(&)[N])
{
return N;
} void main()
{
int a []= {,,};
cout << GetArrayLength(a) << endl;
system("pause");
}
这样,用模板函数的特例化这个属性,把数组长度N在编译器就骗了出来了。。。
属于C++的一个奇技淫巧。。。