数组为什么不让用户得到数组大小?


C/C++中,定义数组时要指定数组大小,这个数组大小系统应该是有保存的,不然动态数组的 delete[] 时系统怎么知道要销毁多少空间,那这个数组大小为什么不让用户可以取得啊,就像 Java 中的数组,是可以取得数组的 Length 的?

Java 中的数组是可以当作参数传递给函数的,但是C++中的数组当作参数传递的时候就退化成指针了,那样我们就必须再写一个数组大小的参数传递进去。

c C++

没好的ID了 12 years, 2 months ago

虽然关联性不太大不过我记得C++下面的_countof的实现方法是类似这样的:

template<class clsName, int arraySize>
(char&)[arraySize] _countofHelper((clsName &array)[arraySize]);

#define _countof(a) sizeof(_countofHelper(a))

传一个指针或者重载了operator[]的对象进去的话会编译错误,而不像C下面的sizeof(a)/sizeof(a[0])那样返回错误的值

papaya answered 12 years, 2 months ago

Your Answer