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
,它应该可以正常工作。
代码的前几部分:
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
,它应该可以正常工作。