”工欲善其事,必先利其器。“—孔子《论语.录灵公》
首页 > 编程 > 如何从 C++ 函数返回数组?

如何从 C++ 函数返回数组?

发布于2024-12-22
浏览:421

How to Return an Array from a Function in C  ?

从 C 中的函数返回数组

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

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

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

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 

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

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 

这将输出:

1 3 3 8 4 1 3 4 3 0

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

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 

这还将输出:

1 3 3 8 4 1 3 4 3 0
最新教程 更多>

免责声明: 提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发到邮箱:[email protected] 我们会第一时间内为您处理。

Copyright© 2022 湘ICP备2022001581号-3