Как я хочу найти размер массива динамически в функции, я использовал оператор sizeof. Но я получил неожиданный результат. вот одна демо-программа, чтобы показать вам, что я хочу делать.проблема с оператором sizeof
//------------------------------------------------------------------------------------------
#include <iostream>
void getSize(int *S1){
int S_size = sizeof S1/sizeof(int);
std::cout<<"array size(in function):"<<S_size<<std::endl;
}
int main(){
int S[]={1,2,3,2,5,6,25,1,6,21,121,36,1,31,1,31,1,661,6};
getSize(S);
std::cout<<"array size:"<<sizeof S/sizeof(int)<<std::endl;
return 0;
}
//------------------------------------------------------------------------------------------
компиляции команда: г ++ demo1.cc -o demo1 {12} мягкая фетровая
выход:
array size(in function):2
array size:19
пожалуйста, объясните, почему это происходит. что можно сделать для решения этой проблемы.
Прочтите [это] (http://stackoverflow.com/questions/1975128/sizeof-an-array-in-the-c-programming-language/1975133#1975133) ответ и [это] (http: // stackoverflow.com/questions/2384107/magic-arguments-in-function-templates). –
Хороший пример того, почему массивы не являются указателями. – Oystein