如何在C++函数中返回数组?

Ste*_*ver 4 c++

我是一个C++菜鸟,我想知道如何从C++函数返回一个数组.
我尝试了以下代码,但似乎没有用.

char some_function(){
    char my_string[] = "The quick brown fox jumps over the lazy dog";
    return my_string;
}
Run Code Online (Sandbox Code Playgroud)

whe*_*ies 5

代码不起作用的原因是函数结束的时间,您创建的字符串的生命周期也是如此.相反,如果你打算在C++中使用std::string并返回它.

std::string myFunc(){
    return string("hey a new string");
}
Run Code Online (Sandbox Code Playgroud)

对于其他数组使用std::vector,std::deque或其他STL类之一.我还要指出你看看STL(标准模板库):

vector<float> myFunc(){
    vector<float> blah;
    blah.push_back(4.5);
    blah.push_back(5.7);
    return blah;
 }
Run Code Online (Sandbox Code Playgroud)

在返回数组时:

指针等的大问题是对象生命周期的考虑.如下面的代码:

int* myFunc(){
    int myInt = 4;
    return &myInt;
}
Run Code Online (Sandbox Code Playgroud)

这里发生的是当函数退出myInt不再存在时,返回的指针指向某个可能存在或不存在4的值的内存地址.如果要使用指针返回数组(我真的建议你不要和使用std::vector)它必须看起来像:

int* myFunc(){
    return new int[4];
}
Run Code Online (Sandbox Code Playgroud)

它使用new运算符.