Страницы

Поиск по вопросам

вторник, 28 января 2020 г.

c++ тип возвращаемого значения функции

#cpp #массивы


В этом примере мне нужно вернуть массив int nums[40]
Как это сделать?  

 test()
{
    int nums[40];

    for (int i=0; i < 40; i++)
    {
        nums[i] = i + 1;
    }

    return nums;
}

    


Ответы

Ответ 1



Вам надо динамически выделить память в функции и вернуть указатель на этот участок памяти: int* test() { int *nums = new int[40]; for (int i=0; i < 40; i++) nums[i] = i + 1; return nums; } UPD struct int_arr_40 { int arr[40]; }; int_arr_40 test() { int_arr_40 nums; for (int i=0; i < 40; i++) nums.arr[i] = i + 1; return nums; }

Ответ 2



Так как у нас C++, можно возвращать std::vector или std::array. std::array test() { std::array nums; for (int i=0; i < 40; i++) nums[i] = i + 1; return nums; } Учитывая RVO, лишнего копирования элементов не будет.

Комментариев нет:

Отправить комментарий