這個問題一直困擾我,因爲永遠。我有一個數組,並且在它的聲明範圍內,我可以使用sizeof
運算符來確定其中的元素數量,但是當我將它傳遞給函數時,它將解釋爲指向數組開頭的指針以及sizeof
運算符只是給了我這個指針變量的大小。如下例所示,C/C++中參數傳遞和數組範圍
#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編譯器)。 – jrok 2011-12-29 20:02:21
如果你沒有C++ 11,你可以使用'boost :: array',這或多或少是與Benjamin相同的東西 – Grizzly 2011-12-29 20:25:07