У меня есть 2 массива, 1 - 1D массив, а второй - 2D-массив. Я передаю оба из них в функцию. Если я попытаюсь использовать оператор sizeof
в функции, а также в самом main
. Но это дает мне 2 разных выхода.sizeof Оператор в C++
Это моя программа ::
#include <iostream>
using namespace std;
void test(int *a,int b[][10]){
cout<<"Inside Test"<<endl;
cout<<sizeof(a)<<endl;
cout<<sizeof(b)<<endl;
}
int main() {
// your code goes here
int a[10];
int b[10][10];
cout<<sizeof(a)<<endl;
cout<<sizeof(b)<<endl;
test(a,b);
return 0;
}
Это выход ::
40
400
Inside Test
4
4
Выход в функции test
является размер указателя по мне. (Пожалуйста, исправьте меня, если я ошибаюсь). Одна из возможных причин, по которой я считаю, что вызов функции копирует адрес моего массива в другое место для доступа к функции, из-за чего я получаю 4 в качестве вывода.
Но, есть способ, которым я могу использовать оператор sizeof в функции в test
и получить правильный размер. Или есть другой способ получить правильный размер. И еще одна причина, по которой я дал выше для вывода, поскольку 4
верен или нет?
Спасибо за любую помощь заранее ..: D
'sizeof (a)' is 'sizeof (int *)', поэтому размер указателя. – Jarod42
Вы не можете получить размер массива из указателя. И ваши параметры функции - оба указателя. – juanchopanza
Несмотря на то, что вы передаете массивы в функции, какие функции получают, это указатели, а не массивы. – dasblinkenlight