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

简要介绍

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

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

通常情况下,函数调用无法返回整个数组,我们只能使用指针来实现这一点。

此外,在C++中,用返回类型为指针声明一个函数,并返回C类型数组的地址,并不适用于所有情况。编译器会对返回局部变量发出警告,并在输出中显示一些异常行为。

因此,在C++中从函数返回数组并不容易。但我们可以通过以下任意一种方法来实现这一目标。

我们马上开始吧。

1. 使用指针

正如我们之前提到的,使用指针从函数返回一个普通数组有时会给我们带来意想不到的结果。但是通过声明数组为静态数组,我们可以避免这种行为和警告。

让我们来看看怎么做吧。 zuò ba.)

#include<iostream>
using namespace std;

int* demo() //return type- address of integer array
{
	static int a[5]; //array declared as static
	for(int i = 0; i<5; i++)
	{
		a[i] = i; //array initialisation
	}

	return a; //address of a returned
}

int main()
{
	int* ptr; //pointer to hold address
	int i;
	ptr = demo(); //address of a
	cout<<"Array is: ";
	for(i=0 ; i<5; i++)
		cout<<ptr[i]<<"\t"; //ptr[i] is equivalent to *(ptr+i)
		
	return 0;
}

输出:

Array is: 0     1       2       3       4

在这里,我们声明了一个返回类型为 int *(指针) 的函数 demo(),在其定义中,我们返回了一个在 main() 函数调用点之处用作数组名和基地址的指针。

从上述输出可以看出,数组已经成功通过该函数返回。

2. 在C++中使用结构

我们也可以通过在C++中的结构内声明来使一个函数返回一个数组。让我们看看如何实现。

#include <iostream>
using namespace std;

struct demo
{
	//array declared inside structure
	int arr[100];
};

struct demo func(int n) //return type is struct demo
{
	struct demo demo_mem; //demo structure member declared
	for(int i=0;i<n;i++)
	{
		//array initialisation
		demo_mem.arr[i] = i;
	}
	return demo_mem; //address of structure member returned
}

int main() 
{
	struct demo a;
	int n=5; //number of elements
	
	a=func(n); //address of arr
	
	cout<<"The Array is : ";
	for(int i=0;i<n;i++)
	{
		cout<<a.arr[i]<<"\t";
	}
	
	return 0;
}

输出:

Array is: 0     1       2       3       4

在这里,注意我们在结构体 demo 中声明了数组 arr。这次函数的返回类型是结构体本身,并返回了 demo_mem(结构体变量),而不是返回数组。

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

使用std::array

在C++中,对于std::array,从函数中返回数组名称实际上意味着整个数组被返回到函数调用的位置。

#include <iostream>
#include<array>
using namespace std;

std::array<int,5> func() //function with return type std::array
{
    std::array<int,5> f_array; //array declared
    
	for(int i=0;i<5;i++)
	{
		//array initialisation
		f_array[i] = i;
	}

    return f_array; //array returned
}

int main() 
{
	std::array<int,5> arr; //array with length 5
	
	arr=func(); //function call
	
	cout<<"The Array is : ";
	for(int i=0;i<5;i++)
	{
		cout<<arr[i]<<"\t";
	}
	
	return 0;
}

输出:

Array is: 0     1       2       3       4

因此,从输出结果可以清楚地看出,函数func()返回的数组是成功的。

结论

在本教程中,我们学习了C++函数中返回数组的不同方法。

如果您有任何进一步的问题,请随时在下方评论区提问。

参考资料

  • C++ return array from function – StackOverflow Question,
  • Two Dimensional Array in C++ – Journal Dev Post.
广告
将在 10 秒后关闭
bannerAds