#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::arraytest() { std::array nums; for (int i=0; i < 40; i++) nums[i] = i + 1; return nums; } Учитывая RVO, лишнего копирования элементов не будет.
Комментариев нет:
Отправить комментарий