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 []= {0,1,2}; cout << GetArrayLength(a) << endl; system("pause"); }
这样,用模板函数的特例化这个属性,把数组长度N在编译器就骗了出来了。。。
属于C++的一个奇技淫巧。。。