Почему-то при обращении к указателю массива для нахождение длины выводит 8(то.e 2 int элемента,а нужно 16(то бишь 4))
int Convert_mas_num(int *mas)
{
int del = 10;
int num = mas[0];
std::cout << sizeof(mas) << std::endl;
for (int i = 1; i <= sizeof(mas)/sizeof(mas[0]); i++)
{
num += mas[i]*del;
del *= 10;
std::cout << i << std::endl;
}
return num;
}
int main()
{
int mas[4] = {2, 4, 0, 1};
int *p_mas = mas;
std::cout << Convert_mas_num(p_mas);
return 0;
}
Ответы (1 шт):
Автор решения: Harry
→ Ссылка
Пора делать какой-то стандартный вопрос и закрывать остальные, как дубли...
Что вы передаете в функцию?
int Convert_mas_num(int *mas)
указатель. Какой размер указателя? Обычно 4 байта для 32-разрядной платформы, 8 байт - для 64-разрядной.
Итак, ваше
sizeof(mas)/sizeof(mas[0])
равно на 64-разрядной платформе 8/4 == 2.
Вместе с указателем вам надо передавать в функцию и размер вашего массива.