如何在C

时间:2019-09-22 23:08:20

标签: c pointers

我正在用C编写一个共享对象(.so),我想将指向数组的指针传递给程序,并将指向另一个数组的指针传递回调用函数。

我的主要签名是:

int main(int argc, char **argv)

但是,我想传递一个指向数组的指针,而在C语言中,这并不能通过函数在某些其他语言中的工作方式来完成,例如function(* data)。

我的问题是:

  1. 如何传递数组指针?

  2. 如何返回数组指针?

我是C语言的新手(来自其他语言)。我已经研究了一段时间,所有示例都显示了从内部函数(而不是主函数)传递和返回指针的过程。我所见过的有用研究表明,不可能从main返回指针,但是有什么方法可以在共享库中动态分配(malloc)内存并将其返回给调用方?

感谢您的帮助。

1 个答案:

答案 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;
}