как получить массив из функции?

Рейтинг: 1Ответов: 1Опубликовано: 23.03.2023

я недавно начал изучать c++ не судите строго

как вы уже поняли из заголовка, мне нужно получить массив из функции. вот код:

#include <iostream>

int a() {
    int b[3] = { 1, 2, 3};

    return b;
}

int main() {
    int b[3] = a();

    std::cout << b[0] << std::endl;

    return 0;
}

Ответы

▲ 2Принят

Массив выделенный на стэке нельзя возвращать из функции, это неопределенное поведение.

Варианты как работать с массивом в функции:

  1. передать массив как входной параметр функции

  2. выделить его на куче в функции и освободить позже - не рекомендуется

  3. сделать массив глобальной переменной - не рекомендуется

  4. использовать stl контейнер, передавать в виде параметра или возвращать из функции - наиболее приемлемый вариант на C++

вариант с передачей массива как параметра для функции в примере ниже

#include <iostream>

void foo(int *const arr) {
  arr[0] = 1;
  arr[1] = 2;
  arr[2] = 3;
}

int main() {
  int arr[3] = {};
  foo(arr);

  std::cout << arr[0] << std::endl;

  return 0;
}