Postgresql C函数接受FLOAT8 []并返回INT []?

时间:2014-05-08 23:27:27

标签: c arrays postgresql

有人可以为C函数提供一个模板,该模板将接收FLOAT8 []值并返回INT []值吗?

我找到的示例使用与输出数字类型相同的输入数字类型。

我没有看到任何显示如何创建新INT []并返回它的示例。

1 个答案:

答案 0 :(得分:0)

一种方式:

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);

}