介绍
在本教程中,我们将了解如何在 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++ 函数返回数组的不同方法。
对于任何进一步的问题,请自由使用下面的评论。
参考
- C++返回数组从函数 - StackOverflow 问题,
- 两个维度数组在C++ - 日志开发邮件