我有一个数组int arr[5],传递给一个函数fillarr(int arr[]):
int fillarr(int arr[])
{
for(...);
return arr;
}
我如何返回那个数组? 我将如何使用它,比如我返回了一个指针我将如何访问它?
我有一个数组int arr[5],传递给一个函数fillarr(int arr[]):
int fillarr(int arr[])
{
for(...);
return arr;
}
我如何返回那个数组? 我将如何使用它,比如我返回了一个指针我将如何访问它?
当前回答
来源:https://www.tutorialspoint.com/cplusplus/cpp_return_arrays_from_functions.htm
c++不允许将整个数组作为函数的参数返回。但是,您可以通过指定数组的名称而不指定索引来返回指向数组的指针。
如果你想从一个函数返回一个一维数组,你必须声明一个函数返回一个指针,如下面的例子所示:
int * myFunction() { . . . }
c++不提倡将局部变量的地址返回给函数外部,因此必须将局部变量定义为静态变量。
将这些规则应用于当前问题,我们可以编写如下程序:
# include <iostream> 使用命名空间std; Int * fillarr(); Int main () { int * p; P = fillarr(); For (int I = 0;I < 5;我+ +) Cout << "p[" << I << "]: "<< *(p + I) << endl; 返回0; } Int * fillarr() { 静态int arr[5]; For (int I = 0;I < 5;+ + i) Arr [i] = i; 返回arr; }
输出将是:
p[0]=0
p[1]=1
p[2]=2
p[3]=3
p[4]=4
其他回答
为了从函数返回一个数组,让我们在结构中定义该数组; 它看起来是这样的
struct Marks{
int list[5];
}
现在让我们创建类型结构的变量。
typedef struct Marks marks;
marks marks_list;
我们可以通过以下方式将array传递给一个函数并为其赋值:
void setMarks(int marks_array[]){
for(int i=0;i<sizeof(marks_array)/sizeof(int);i++)
marks_list.list[i]=marks_array[i];
}
我们也可以返回数组。要返回数组,函数的返回类型应该是结构类型即标记。这是因为在现实中,我们传递的是包含数组的结构。最终的代码可能是这样的。
marks getMarks(){
return marks_list;
}
只需要定义一个类型[]作为返回值,就像:
private string[] functionReturnValueArray(string one, string two)
{
string[] x = {one, two};
x[0] = "a";
x[1] = "b";
return x;
}
. . . 函数调用:
string[] y;
y = functionReturnValueArray(stringOne, stringTwo)
这里有一个完整的例子来解决这类问题
#include <bits/stdc++.h>
using namespace std;
int* solve(int brr[],int n)
{
sort(brr,brr+n);
return brr;
}
int main()
{
int n;
cin>>n;
int arr[n];
for(int i=0;i<n;i++)
{
cin>>arr[i];
}
int *a=solve(arr,n);
for(int i=0;i<n;i++)
{
cout<<a[i]<<endl;
}
return 0;
}
为什么不把数组作为参数“返回”呢?
fillarr(int source[], size_t dimSource, int dest[], size_t dimDest)
{
if (dimSource <= dimDest)
{
for (size_t i = 0; i < dimSource; i++)
{
//some stuff...
}
}
else
{
//some stuff..
}
}
或者用更简单的方式(但你必须知道尺寸…):
fillarr(int source[], int dest[])
{
//...
}
来源:https://www.tutorialspoint.com/cplusplus/cpp_return_arrays_from_functions.htm
c++不允许将整个数组作为函数的参数返回。但是,您可以通过指定数组的名称而不指定索引来返回指向数组的指针。
如果你想从一个函数返回一个一维数组,你必须声明一个函数返回一个指针,如下面的例子所示:
int * myFunction() { . . . }
c++不提倡将局部变量的地址返回给函数外部,因此必须将局部变量定义为静态变量。
将这些规则应用于当前问题,我们可以编写如下程序:
# include <iostream> 使用命名空间std; Int * fillarr(); Int main () { int * p; P = fillarr(); For (int I = 0;I < 5;我+ +) Cout << "p[" << I << "]: "<< *(p + I) << endl; 返回0; } Int * fillarr() { 静态int arr[5]; For (int I = 0;I < 5;+ + i) Arr [i] = i; 返回arr; }
输出将是:
p[0]=0
p[1]=1
p[2]=2
p[3]=3
p[4]=4