返回2个数组(通过引用传递)的函数 我必须在C++中执行一个函数,通过引用从2个数组返回它们。 我不知道,似乎没有人知道。 你能帮我写个例子吗? 我想该怎么办 int *vettore=new int[5]; return vettore

返回2个数组(通过引用传递)的函数 我必须在C++中执行一个函数,通过引用从2个数组返回它们。 我不知道,似乎没有人知道。 你能帮我写个例子吗? 我想该怎么办 int *vettore=new int[5]; return vettore,c++,arrays,C++,Arrays,买了它只会退回一个。 Tnx。让我们暂时忘记阵列,因为这是另一个问题包。让我们集中精力返回两个简单类型,例如返回两个整数 显然这不起作用,因为。。。不是python: int, int foo() { int a = ... int b = ... return a, b; }

买了它只会退回一个。
Tnx。让我们暂时忘记阵列,因为这是另一个问题包。让我们集中精力返回两个简单类型,例如返回两个整数

显然这不起作用,因为。。。不是python:

int, int foo()
{
   int a = ...
   int b = ...

   return a, b;
}
<如果你想在C++中返回多个值?

,你会选择什么选项? 备选案文1。退课 您可以将您的值绑定到一个类中,或者为它们创建一个新的类(如果有意义的话),或者简单地使用std::pair或std::tuple:

我想这就是你们老师所说的“参考传递”的意思

好的,那么阵列呢? 这是一个很难回答的问题,因为不清楚数组是什么意思,并且不鼓励使用某些含义

我将从最推荐的开始,到被认为是不好的做法,甚至是错误的做法:

向量

C++中表示数组的事实类型应该始终是STD::vector。因此,您通过引用返回的要求可能意味着:

void foo(std::vector<int>& v1, std::vector<int&>& v2);
C指针 好的,现在我们在沮丧的领域。不要这样做,除非是为了安抚不合理的老师或课程:

void foo(int* &v1, int* &v2)
{
   v1 = new int[11];
   v2 = new int[24];
   ...
}
C阵列 您可以这样做:

return std::make_pair(array1,array2);
你需要包括

要访问阵列,请使用pair.first或pair.second

例如:

#include <utility>  //std::pair
#include <iostream> //std::cout 
std::pair<int*,int*> returnpair(){ 
    int arr1[3] = {1,2,3};
    int arr2[3] = {4,5,6};
    return std::make_pair(arr1,arr2);
 } 
int main(){ 
    std::pair<int*,int*> pair= returnpair();
    std::cout<<pair.first[1]; //access 2nd member of arr1
}
参考:

您可以通过返回在C/C++中可以接受的结构节点指针来实现这一点

以下是节点的示例代码:

 struct node {
   int a[100];
   int b[100];
};
来参加活动:

struct node* fun() {
      struct node* ptr;  
     // write your code
     return ptr;
}
总而言之:您可以按如下方式访问阵列:

  struct node* ptr=fun();
  ptr->a  // is the first array
  ptr->b  // is the second array

希望能有帮助

是的,我不知道怎么翻第二个。这就是我通常使用数组返回的方式。但是我只能用一个。请显示完整的代码,并清楚地询问您想要什么,或者将一对指针返回到两个数组。看这里,似乎没有人也有——如果你的老师不知道怎么做,那么他们打算怎么给你评分?你不使用的原因是什么?
#include <utility>  //std::pair
#include <iostream> //std::cout 
std::pair<int*,int*> returnpair(){ 
    int arr1[3] = {1,2,3};
    int arr2[3] = {4,5,6};
    return std::make_pair(arr1,arr2);
 } 
int main(){ 
    std::pair<int*,int*> pair= returnpair();
    std::cout<<pair.first[1]; //access 2nd member of arr1
}
2
 struct node {
   int a[100];
   int b[100];
};
struct node* fun() {
      struct node* ptr;  
     // write your code
     return ptr;
}
  struct node* ptr=fun();
  ptr->a  // is the first array
  ptr->b  // is the second array