Problem z wskaźnikiem

0

Cześć, napisałem prostą funkcję, która zmienia liczbę czterocyfrową na tablicę jej cyfr:

#include<iostream>
using namespace std;

short* numToArr(short x)
{
	short num[4];
	for (int i = 0; i < 4; ++i)
	{
		num[3 - i] = x % 10;
		x /= 10;
	}
	return num;
}

int main() {
	short* f = numToArr(1232);
	cout << f[0] << f[1] << f[2] << f[3] << endl;
	for (int q = 0; q < 4; ++q)
		cout << f[q];
	return 0;
}

Po skompilowaniu w pierwszej linijce wyjścia znajduje się poprawny wynik, tj. 1232, a w drugiej 31023239-1184239. Nie jestem w stanie poprawnie wypisać zawartości tablicy w pętli. Czym to jest spowodowane?

0

Masz tam UB - zwracasz adres do lokalnej tablicy. Zwracaj std::array przez wartość, albo alokuj dynamicznie (np. poprzez użycie std::vector)

1 użytkowników online, w tym zalogowanych: 0, gości: 1