这个问题一直困扰着我。我有一个数组,并且在其声明的范围内,我可以使用sizeof
运算符来确定其中的元素数量,但是当我将它传递给函数时,它将其解释为只是一个指向开头的指针。数组和sizeof
运算符只给我这个指针变量的大小。如下例所示,
#include<iostream>
int count(int a[]){
return (sizeof(a)/sizeof(int));
}
int main(){
int a[]={1,2,3,4,5};
std::cout << sizeof(a)/sizeof(int) << " " << count(a) << std::endl;
return 0;
}
代码的输出为5 2
。我如何将数组传递给函数,以便我可以通过仅使用sizeof
运算符来确定其大小,并且不必将额外的大小作为参数传递给此函数?
答案 0 :(得分:6)
template<size_t N>
int count(int (&a)[N])
{
return N;
}
答案 1 :(得分:1)
你做不到。没有办法传递一个数组,使它携带它的大小信息。你必须自己做。您必须将计数作为附加参数传递。