При return d;
вы возвращаете указатель на локальную переменную, т. Е. Время жизни массива d
заканчивается после завершения функции func
. Доступ к этому массиву впоследствии (через возвращенный указатель) является неопределенным поведением.
Простым решением было бы сделать переменную d
static
так, чтобы ее время жизни продолжалось до конца программы:
int* func() {
static int d[3];
Но учтите, что эта переменная d
будет существовать в программе только один раз, так что результат одного вызова может быть изменен позже. Попробуйте использовать std::vector<int>
в качестве возвращаемого типа или передать массив для изменения в качестве параметра функции void func(int[] d) {