首页 > 后端开发 > C++ > 如何从 C 函数返回数组?

如何从 C 函数返回数组?

Mary-Kate Olsen
发布: 2024-10-29 08:05:30
原创
534 人浏览过

How to Return an Array from a Function in C  ?

从 C 中的函数返回数组

您可以使用指针从 C 中的函数返回数组。但是,如果数组未正确分配,这可能会导致问题。

在您的示例中,您尝试返回在堆栈上分配的数组。这可能会在函数返回时导致未定义的行为。

要避免此问题,您可以使用 new 运算符在堆上分配数组。然后,您可以返回指向已分配数组的指针。

<code class="C++">int* uni(int *a, int *b) {
    int *c = new int[10];
    int i = 0;
    while (a[i] != -1) {
        c[i] = a[i];
        i++;
    }
    for (; i < 10; i++) {
        c[i] = b[i - 5];
    }
    return c;
}</code>
登录后复制

然后您可以使用返回的指针来访问该数组。

<code class="C++">int main() {
    int a[10] = {1, 3, 3, 8, 4, -1, -1, -1, -1, -1};
    int b[5] = {1, 3, 4, 3, 0};
    int *c = uni(a, b);
    for (int i = 0; i < 10; i++) {
        cout << c[i] << " ";
    }
    cout << "\n";
    delete[] c;
    return 0;
}</code>
登录后复制

这将输出:

1 3 3 8 4 1 3 4 3 0
登录后复制
登录后复制

另一种选择是使用结构体来包装数组。这可以通过值返回,并且结构将被复制,包括其内部的数组。

<code class="C++">struct myArray {
    int array[10];
};

myArray uni(int *a, int *b) {
    myArray c;
    int i = 0;
    while (a[i] != -1) {
        c.array[i] = a[i];
        i++;
    }
    for (; i < 10; i++) {
        c.array[i] = b[i - 5];
    }
    return c;
}

int main() {
    int a[10] = {1, 3, 3, 8, 4, -1, -1, -1, -1, -1};
    int b[5] = {1, 3, 4, 3, 0};
    myArray c = uni(a, b);
    for (int i = 0; i < 10; i++) {
        cout << c.array[i] << " ";
    }
    cout << "\n";
    return 0;
}</code>
登录后复制

这也将输出:

1 3 3 8 4 1 3 4 3 0
登录后复制
登录后复制

以上是如何从 C 函数返回数组?的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板