0
是否有人可以为C函数提供一个模板来接收FLOAT8 []值并返回INT []值?Postgresql C函数需要一个FLOAT8 []并返回一个INT []?
我发现的例子使用与输出数字类型相同的输入数字类型。
我还没有看到任何示例显示如何创建一个新的INT []并将其返回。
是否有人可以为C函数提供一个模板来接收FLOAT8 []值并返回INT []值?Postgresql C函数需要一个FLOAT8 []并返回一个INT []?
我发现的例子使用与输出数字类型相同的输入数字类型。
我还没有看到任何示例显示如何创建一个新的INT []并将其返回。
一种方式:
INT *my_function1(FLOAT8 *float8)
{
INT *zzz = malloc(sizeof(INT) * 10);
zzz[0] = 123;
zzz[1] = 234;
...
return(zzz);
}
呼叫以上这样的:
{
INT *aaa = NULL;
FLOAT8 bbb[10];
...
aaa = my_function1(bbb);
printf("%d, %d\n", aaa[0], aaa[1]); /* Output: "123, 234"
...
if(aaa)
free(aaa);
}
void my_function2(FLOAT8 *IN_float8, INT **OUT_int)
{
INT *yyy=malloc(sizeof(INT) * 10);
zzz[0] = 123;
zzz[1] = 234;
...
if(OUT_int)
*OUT_int = yyy;
else
{
free(yyy);
fprintf(stderr, "Oops! You gave me a NULL pointer for OUT_int.\n");
}
return;
}
呼叫以上这样的:
{
INT *aaa = NULL;
FLOAT8 bbb[10];
...
my_function1(bbb, &aaa);
printf("%d, %d\n", aaa[0], aaa[1]); /* Output: "123, 234"
...
if(aaa)
free(aaa);
}
请编辑你的问题和答案:'INT []',你真的是'int []'吗?你能定义'FLOAT8'的含义吗? –
请注意,内置的转换函数已经做到了这一点:'select('{1.0,2.1,3.0}':: float []):: int []' –
可能的重复[从Postgres C函数返回一个数组?](http://stackoverflow.com/questions/23557980/return-an-array-from-a-postgres-c-function) –