在函数中返回数组

新手上路,请多包涵

我有一个数组 int arr[5] 被传递给一个函数 fillarr(int arr[])

 int fillarr(int arr[])
{
    for(...);
    return arr;
}

  1. 我怎样才能返回该数组?
  2. 我将如何使用它,比如我返回了一个指针,我将如何访问它?

原文由 Ismail Marmoush 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 466
2 个回答

在这种情况下,您的数组变量 arr 实际上也可以通过隐式转换被视为指向内存中数组块开头的指针。您正在使用的这种语法:

 int fillarr(int arr[])

有点像语法糖。你真的可以用这个替换它,它仍然可以工作:

 int fillarr(int* arr)

所以在同样的意义上,你想要从你的函数返回的实际上是一个指向数组中第一个元素的指针:

 int* fillarr(int arr[])

而且您仍然可以像使用普通数组一样使用它:

 int main()
{
  int y[10];
  int *a = fillarr(y);
  cout << a[0] << endl;
}

原文由 Brent Writes Code 发布,翻译遵循 CC BY-SA 2.5 许可协议

一个简单而详尽的示例,以便我忘记概念并需要帮助时可以参考这里。

 #include <iostream>
using namespace std;
int *ReturnArray(int arr[], int size)
{
    static int MinMax[2] = {0, 0}; // must use static, else address would be deleted after the return is reached
    MinMax[0] = arr[0];
    MinMax[1] = arr[size - 1];
    return MinMax;
}
int main()

{
    int arr[] = {1, 2, 3};
    int size = sizeof(arr) / sizeof(*arr);
    int *ans;                     // pointer to hold returned array
    ans = ReturnArray(arr, size); // only pointer can receive the return, not an array
    cout << "Min: " << ans[0] << " Max: " << ans[1];
    return 0;
}

原文由 Pawan Kumar 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题