Эта проблема беспокоит меня с незапамятных времен.У меня есть массив, и в области его объявления я могу использовать оператор 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
, и мне не пришлось передавать дополнительный размер в качестве параметра этой функции?