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

介绍

在本教程中,我们将了解如何在 C++ 中从函数中返回一个数组。

在 C++ 函数中返回数组的方法

通常,返回整个数组到函数调用是不可能的,我们只能使用 pointers来完成。

此外,在 C++ 中声明一个函数以指针的返回类型,并返回一个 ** C** 类型数组的地址,并不适用于所有情况。

因此,在 C++ 中返回一个函数的数组并不容易,但我们可以通过遵循下面的任何方法来实现这一点。

让我们直接进入它。

1、使用指针

正如我们之前提到的,使用 **pointers 函数返回一个正常的 **array 函数有时会给我们带来意想不到的结果,但这种行为和警告可以通过将数组宣布为静态来避免。

让我们看看如何。

 1#include<iostream>
 2using namespace std;
 3
 4int* demo() //return type- address of integer array
 5{
 6    static int a[5]; //array declared as static
 7    for(int i = 0; i<5; i++)
 8    {
 9    	a[i] = i; //array initialisation
10    }
11
12    return a; //address of a returned
13}
14
15int main()
16{
17    int* ptr; //pointer to hold address
18    int i;
19    ptr = demo(); //address of a
20    cout<<"Array is: ";
21    for(i=0 ; i<5; i++)
22    	cout<<ptr[i]<<"\t"; //ptr[i] is equivalent to *(ptr+i)
23    	
24    return 0;
25}

出发点:**

1Array is: 0 1 2 3 4

在这里,我们已声明函数 demo() 以返回类型 int *(指针),并在其定义中,我们已返回 a (作为分组名称和基础地址) 到函数调用在 `main() 中的网站。

正如我们从上面的输出中可以看到的那样,函数成功返回数组。

2、使用 C++ 中的结构

我们还可以使函数返回一个数组,通过在C++中的结构(/community/tutorials/structures-in-c-plus-plus)中声明它。

 1#include <iostream>
 2using namespace std;
 3
 4struct demo
 5{
 6    //array declared inside structure
 7    int arr[100];
 8};
 9
10struct demo func(int n) //return type is struct demo
11{
12    struct demo demo_mem; //demo structure member declared
13    for(int i=0;i<n;i++)
14    {
15    	//array initialisation
16    	demo_mem.arr[i] = i;
17    }
18    return demo_mem; //address of structure member returned
19}
20
21int main() 
22{
23    struct demo a;
24    int n=5; //number of elements
25    
26    a=func(n); //address of arr
27    
28    cout<<"The Array is : ";
29    for(int i=0;i<n;i++)
30    {
31    	cout<<a.arr[i]<<"\t";
32    }
33    
34    return 0;
35}

出发点:**

1Array is: 0 1 2 3 4

在这里,请注意,我们已经在 structure的内部声明了数组 arr demo. 这次函数具有结构本身的返回类型,并返回 demo_mem(结构变量)而不是数组。

通过使用另一个结构变量a,我们可以在main()函数中访问数组arr

使用 std::array

对于 **C++ **中的 `std::array,从函数返回数组名实际上将整个数组返回函数调用网站。

 1#include <iostream>
 2#include<array>
 3using namespace std;
 4
 5std::array<int,5> func() //function with return type std::array
 6{
 7    std::array<int,5> f_array; //array declared
 8
 9    for(int i=0;i<5;i++)
10    {
11    	//array initialisation
12    	f_array[i] = i;
13    }
14
15    return f_array; //array returned
16}
17
18int main() 
19{
20    std::array<int,5> arr; //array with length 5
21    
22    arr=func(); //function call
23    
24    cout<<"The Array is : ";
25    for(int i=0;i<5;i++)
26    {
27    	cout<<arr[i]<<"\t";
28    }
29    
30    return 0;
31}

出发点:**

1Array is: 0 1 2 3 4

因此,从输出中可以看出,函数 func() 的数组返回是成功的。

结论

所以在本教程中,我们了解了我们可以 **从 C++ 函数返回数组的不同方法。

对于任何进一步的问题,请自由使用下面的评论。

参考

Published At
Categories with 技术
Tagged with
comments powered by Disqus