Эта проблема прослушивала меня с навсегда. У меня есть массив и в области его объявления я могу использовать оператор 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
Если у вас нет C++ 11, вы можете просто использовать 'boost :: array', что более или менее то же самое – Grizzly