У вас есть несколько опций ... То, как вы это делаете сейчас, приведет к неопределенному поведению, так как массив выйдет из области видимости, как только функция hte вернется.Так что одним из вариантов является динамическое выделение памяти.
char * recmsg()
{
char * array = new char[128];
return array;
}
Просто не забудьте очистить ее с помощью метода удаления (или бесплатно, если вы использовали malloc).Во-вторых, вы можете использовать параметр ...
void recmsg(char * message, int size)
{
if (message == 0)
message = new char[size];
}
Опять-таки, здесь происходит то же самое, что и в предыдущем.Также обратите внимание на проверку на 0, чтобы убедиться, что вы не вызываете new для уже выделенного указателя.
Наконец, вы можете использовать вектор ..
std::vector<char> recmsg()
{
std::vector<char> temp;
//do stuff with vector here
return temp;
}