我正在用C编写一个共享对象(.so),我想将指向数组的指针传递给程序,并将指向另一个数组的指针传递回调用函数。
我的主要签名是:
int main(int argc, char **argv)
但是,我想传递一个指向数组的指针,而在C语言中,这并不能通过函数在某些其他语言中的工作方式来完成,例如function(* data)。
我的问题是:
如何传递数组指针?
如何返回数组指针?
我是C语言的新手(来自其他语言)。我已经研究了一段时间,所有示例都显示了从内部函数(而不是主函数)传递和返回指针的过程。我所见过的有用研究表明,不可能从main返回指针,但是有什么方法可以在共享库中动态分配(malloc)内存并将其返回给调用方?
感谢您的帮助。
答案 0 :(得分:0)
要传入和传出数组:
int arr[6];
void putarr(int x[6])
{
memcpy(arr, x, sizeof(arr));
}
void *getarr(void)
{
return arr;
}
如果您真的想将指针传递给数组(这与数组相同,但比较麻烦),请使用以下功能:
void (*getarr_p(void))[6]
{
return &arr;
}