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

use*_*444 -1 c++ arrays return

为什么以下代码不起作用?

它编译得很好但输出就像地址,如果我写f使用*,输出是0如果我写f没有*.

#include <iostream>
#include<cstring>
using namespace std;
using std::size_t;
int *f(size_t s){
    int *ret=new int[s];
     for (size_t a=0;a<s;a++)
          ret[a]=a;
      return ret;
      }
int main(){

    size_t s=20;
    cout<<*f(s)<<endl;

    return 0;
}
Run Code Online (Sandbox Code Playgroud)

Kla*_*aim 12

你正在使用C++,只需使用std :: vector,它简化了一切:

#include <iostream>
#include <vector>

std::vector<int> f(size_t s){
    std::vector<int> ret( s );
     for (std::size_t a=0;a<s;a++)
          ret[a]=a;
      return ret;
      }
int main(){

    std::size_t s = 20;
    std::vector<int> v = f(s);
    for( std::vector<int>::iterator it = v.begin(); it != v.end(); ++it ) // go through each element
        std::cout<< *it << std::endl;

    for( int idx = 0; idx != v.size(); ++idx ) // simpler variant that is equivalent in this example
        std::cout<< v[idx] << std::endl;


    return 0;
}
Run Code Online (Sandbox Code Playgroud)


cod*_*ict 11

该函数f(s)返回动态分配的数组的地址.

如果你这样做 cout<<f(s)<<endl;,将打印地址,如果你这样做cout<<*f(s)<<endl;是在索引打印值00.

如果要打印整个数组,请运行循环:

int *p = f(s);
for (size_t a=0;a<s;a++) {
    cout<<*(p+a)<<endl;
}
Run Code Online (Sandbox Code Playgroud)