C++ не позволяет возвращать полный массив в качестве параметра функции. Однако вы можете вернуть указатель на массив, указав имя массива без индекса.
Если вы хотите вернуть одномерный массив из функции, вы должны объявить функцию, которая возвращает указатель, например:
int * myFunction() { . . . }
Кроме того, C++ не поддерживает возврат адреса локальной переменной вне функции, если локальная переменная не определена какstaticПеременная. Например:
#include <iostream>
using namespace std;
int a[10] = { 10,20 };
char *GetCharArr()
{
static char sss[20] = { 0 };
sprintf_s(sss, "ABABXX%d", a[0]);
cout << sss << endl;
return sss;
}
int main()
{
char *xxx;
xxx = GetCharArr();
printf("Текущая строка: %s", xxx);
system("PAUSE");
return 0;
}
другой пример:
#include <iostream>
#include <ctime>
#include <cstdlib>
using namespace std;
// функция для генерации и возврата случайных чисел
int *getRandom()
{
static int r[10];
// устанавливаем семя
srand((unsigned)time(NULL));
for (int i = 0; i < 10; ++i)
{
r[i] = rand();
cout << r[i] << endl;
}
return r;
}
// Основная функция для вызова функции, определенной выше
int main()
{
// указатель на целое число
int *p;
p = getRandom();
for (int i = 0; i < 10; i++)
{
cout << "*(p + " << i << ") : ";
cout << *(p + i) << endl;
}
return 0;
}