Я пытаюсь создать функцию с именем getSortedRanks
, которая возвращает массив. Я скопировал формат для возвращения массивов из этого вопроса Return array in a function, но массив не возвращается правильно.Функция C++ возвращает неверный массив
#include <stdlib.h>
#include <stdio.h>
#define familyMembers 4
int *getSortedRanks()
{
int rankedMembers[familyMembers] = {3,4,2,1};
return rankedMembers;
}
int main()
{
int *sortedRanks = getSortedRanks();
//print the returned array
for(int i = 0; i < familyMembers; i ++)
{
cout << "ranked member is " << sortedRanks[i] << endl;
}
return 0;
}
Когда я запускаю этот вывод:
ranked member is 3
ranked member is 0
ranked member is 0
ranked member is 2686744
Первый элемент массива sortedRanks
всегда правильно, но другие не являются. Как я могу исправить то, как массив возвращается?
http://stackoverflow.com/q/4643713/1741542, HTTP : //stackoverflow.com/q/7499864/1741542, http://stackoverflow.com/q/13980362/1741542, http://stackoverflow.com/q/423186/1741542 должен дать вам подсказку. –
Не возвращайте указатели на вещи, которые живут в стеке функции. –
Почему вы используете макрос вместо статического int? –