return 包含指向 C 数组指针的结构的函数

Function that return a structure that contains a pointer to array in C

代码的前几部分:

    typedef struct
    {
        double sr, med;
        int **t;
    }wynik;

    wynik calc(int *t[], int size)
    {
        int i, *niep = NULL, j = 0, k = 1, sum = 0;
        int *sorted = (int*)malloc(size*sizeof(int));
        wynik out;
        //coping, sorting
        for (i = 0; i < size; i++)
            sorted[i] = (*t)[i];
        qsort(sorted, size, sizeof (**t), cmp);
        out.t = &sorted;
...
    return out;
    }

然后在 main() 中:

wynik get = calc(&tab, tab_size);

使用调试器我发现在 calc() 中 out.t 指向一个数组,但在 main() 中 get.t 指向一些奇怪的东西。 如何解决?

out.t包含局部变量sorted的地址。当函数returns时,这个地址不再有效,因为局部变量超出范围。

我看不出 out.t 应该是 int** 而不是 int* 的原因。如果将其更改为 int* 并仅将其值设置为 out.t = sorted,它应该可以正常工作。