Как передать массив из одной функции в другие?
Эта функция заполняет массив случайными числами. Как передать заполненный массив в другие функции, чтобы была возможность его обработки?
int* int_random()
{
int mass1[10];
int i;
srand(time(0));
for (i = 0; i < 10; i++)
mass1[i] = 1 + rand() % 5;
for (i = 0; i < 10; i++)
cout << mass1[i] << " ";
return mass1;
}
Ответы (1 шт):
Во-первых, такой массив не должен быть локальным. Возвращать указатель на локальный массив - распространенная, но от этого не менее неприятная, ошибка начинающего. Передавайте готовый массив или создавайте его динамически (только потом надо будет не забыть его удалить) - например,
int mass[10];
int* int_random(int * mass, int * mass_size)
{
int i;
srand(time(0));
for (i = 0; i < mass_size; i++)
или
int* int_random()
{
int * mass1 = new int[10];
int i;
srand(time(0));
Ну, а передавать потом - просто как указатель, ну и рядом - размер.
Но у вас же С++, так что почему обязательно - массив? Можно воспользоваться, например, std::array (если знаете размер заранее), std::vector. На самый худой конец - обернуть массив в структуру
struct intMassiv { int mass[10]; }
которую можно возвращать из функции по значению, или использовать unique_ptr с динамически выделенным массивом, чтоб потом не мучиться с удалением.