C/C++中的参数传递和数组范围

sid*_*rma 0 c++ arrays parameters scope function

这个问题一直困扰着我.我有一个数组,并且在它的声明范围内,我可以使用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;
}
Run Code Online (Sandbox Code Playgroud)

代码的输出是5 2.我如何将数组传递给函数,以便我可以通过仅使用sizeof运算符来确定其大小,并且不必将额外的大小作为参数传递给此函数?

Ben*_*ley 6

template<size_t N>
int count(int (&a)[N])
{
    return N;
}
Run Code Online (Sandbox Code Playgroud)

  • @sidharthsharma:不,我不能. (5认同)