数组为什么不让用户得到数组大小?
C/C++中,定义数组时要指定数组大小,这个数组大小系统应该是有保存的,不然动态数组的 delete[] 时系统怎么知道要销毁多少空间,那这个数组大小为什么不让用户可以取得啊,就像 Java 中的数组,是可以取得数组的 Length 的?
Java 中的数组是可以当作参数传递给函数的,但是C++中的数组当作参数传递的时候就退化成指针了,那样我们就必须再写一个数组大小的参数传递进去。
没好的ID了
12 years, 10 months ago
Answers
虽然关联性不太大不过我记得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, 10 months ago