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++的一个奇技淫巧。。。