【发布时间】:2012-01-30 02:33:58
【问题描述】:
这个问题一直困扰着我。我有一个数组,在它的声明范围内,我可以使用 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 运算符来确定其大小,而不必将额外的大小作为参数传递给该函数?
【问题讨论】:
-
也可以考虑
std::array(你需要一个 C++11 编译器)。 -
如果你没有 C++11,你可以使用
boost::array,这或多或少是一回事
标签: c++ arrays function parameters scope