我想用C++做一个简单的函数来练习一下。它应该做与python中的range()函数相同的事情,但现在要简单得多。我遇到了一个问题,数组没有正确地从函数返回到主函数。我曾经在下面编码,得到了一个奇怪的错误。有人知道问题出在哪里吗?
#include "iostream"
int * range(int max){
int n = 0;
int ran [max] ;
while (n < max){
ran[n] = n;
n += 1;
}
return ran;
}
int main(){
int * ranger;
ranger = range(5);
for(int k = 0; k < 5; k++){
std::cout << ranger[k] << " ";
}
return 0;
}
尝试将数组作为引用传递,而不是返回它。
#include "iostream"
void range(int max, int* ranger){
int n = 0;
while (n < max){
ranger[n] = n;
n += 1;
}
}
int main(){
int * ranger;
ranger = new int[5];
range(5, ranger);
for(int k = 0; k < 5; k++){
std::cout << ranger[k] << " ";
}
return 0;
}
在C++中如何从函数返回数组
在C++中不能从函数返回数组。
但是,您可以返回class对象,并且class可以包含数组作为成员。这样,通过在类中包装数组并返回该类的实例,您就可以绕过限制。标准库中有一个此类数组包装器的通用模板。它称为std::array
。
int * range(int max){
int n = 0;
int ran [max] ;
数组变量的大小必须是C++中的编译时常数。函数参数不是编译时间常数。因此,这个程序是错误的。
若要创建动态大小的数组,必须动态分配它。创建动态数组的最简单、最方便的方法是使用std:vector
。