我有一个数组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;
}
我如何返回那个数组? 我将如何使用它,比如我返回了一个指针我将如何访问它?
当前回答
int *fillarr(int arr[])
你仍然可以使用结果like
int *returned_array = fillarr(some_other_array);
if(returned_array[0] == 3)
do_important_cool_stuff();
其他回答
只需要定义一个类型[]作为返回值,就像:
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)
如上所述的路径是正确的。但我认为如果我们只是返回一个函数的局部数组变量,有时它会返回垃圾值作为它的元素。
为了避免这种情况,我必须动态地创建数组并继续。大概是这样的。
int* func()
{
int* Arr = new int[100];
return Arr;
}
int main()
{
int* ArrResult = func();
cout << ArrResult[0] << " " << ArrResult[1] << endl;
return 0;
}
int *fillarr(int arr[])
你仍然可以使用结果like
int *returned_array = fillarr(some_other_array);
if(returned_array[0] == 3)
do_important_cool_stuff();
为什么不把数组作为参数“返回”呢?
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[])
{
//...
}
实际上,当你在函数中传递一个数组时,指向原始数组的指针被传递到函数形参中,因此对该函数中数组所做的更改实际上是在原始数组上进行的。
#include <iostream>
using namespace std;
int* func(int ar[])
{
for(int i=0;i<100;i++)
ar[i]=i;
int *ptr=ar;
return ptr;
}
int main() {
int *p;
int y[100]={0};
p=func(y);
for(int i=0;i<100;i++)
cout<<i<<" : "<<y[i]<<'\n';
}
运行它,您将看到更改