给定以下功能:
template<class T>
void foo(T* ar)
{
std::cout << sizeof(ar) / sizeof(ar[0]) << std::endl;
for (int i = 0; i < 6; i++)
std::cout << ar[i] << " ";
}
和以下数组:
int ar[] = { 5, 1, 6, 8, 9, 3 };
foo(ar);
我希望程序先打印“6”,然后再打印数组的内容。但由于某种原因,sizeof(ar) / sizeof(ar[0])
评估为 1(因为两者都sizeof(ar)
评估sizeof(ar[0])
为 '4'),但打印工作正常(意味着传递的数组确实包含所有 6 个元素)。
这只发生在传递给函数的数组上(我尝试在 main() 中评估长度,其中声明了数组并且工作正常)。如何获取函数内数组的长度?