我是一个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)
代码不起作用的原因是函数结束的时间,您创建的字符串的生命周期也是如此.相反,如果你打算在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运算符.