我试图创建一个 tm* 结构数组,然后在函数结束时返回它们。这是我目前拥有的:
struct tm* BusinessLogicLayer::GetNoResponceTime()
{
struct tm* time_v[3];
struct tm* time_save;
int s = 3;
time_save = LastSavedTime();
time_v[0] = time_save;
sleep(5);
time_save = LastSavedTime();
time_v[1] = time_save;
sleep(5);
time_save = LastSavedTime();
time_v[2] = time_save;
return time_v;
}
我知道根据我现在的代码,不可能返回数组,因为它会在函数结束时被销毁。任何人都可以帮助我了解在函数结束后如何能够从返回值访问数组吗?
问候
保罗
最佳答案
要么在堆上分配数组,但您需要记住在使用完数组后delete[]
该数组。
tm* time_v = new tm[3];
或者因为这是 C++,更好的选择是使用 vector
std::vector<tm> time_v(3);
vector 本身分配在堆栈上,但它包含一个分配在堆上的数组。当您复制 vector (例如返回它)时,底层数组的内容也会被复制。
您还可以通过不使用临时变量time_save
来简化函数
time_v[0] = *LastSavedTime();
sleep(5);
time_v[1] = *LastSavedTime();
sleep(5);
time_v[2] = *LastSavedTime();
在 C++ 中也不需要 C 风格的结构声明
struct tm* time_v[3];
//should be
tm* time_v[3];
关于c++ - 从函数返回一个 tm* 结构数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2560214/