#define ArrayLen(array) sizeof(array) / sizeof(array[0])
int ArrayLen(T& array)
{
return sizeof(array) / sizeof(array[0]);
}
这个windows sdk里就有定义,ARRAYSIZE。
也就是sizeof(a)/sizeof(a[0])。c、c++里的一种常见的标准写法。
但注意,编译器对 a 的静态声明必须是“可见”的,即 a 不能退化为指针(作为参数传递时)。否则不能使用这个计算数组长度。
int arraylen(int array[])//这样传递数组是不会退化为指针么?
{
return sizeof(array)/sizeof(array[0]);
}
如何才可用不退化为指针?