返回包含指向C中数组的指针的结构的函数

时间:2015-03-10 14:18:07

标签: c arrays structure

代码的前几部分:

    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指向一些奇怪的东西。 如何解决?

1 个答案:

答案 0 :(得分:3)

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

我认为out.t应该是int**而不是int*。如果您将其更改为int*并仅使用out.t = sorted设置其值,那么它应该可以正常工作。