Char *数组参数C.

时间:2014-04-06 09:27:30

标签: c arrays pointers

我想在C函数中获取char *数组作为参数。我使用此代码:

void func(char* str, char *res[])
{
  res[0]=strstr(str,"str");
  ....
}

int main()
{
   char *res[6];
   func(str,res);
...
}

据我所知,数组作为指针发送到函数,所以我不知道为什么会出现编译错误:

Argument of type char(*)[6] is incompatible with parameter of type char**

我该如何更正我的代码?

2 个答案:

答案 0 :(得分:1)

我担心你的问题出在其他地方,因为我成功编译了以下代码:

void
func(char* str, char *res[])
{
}

int
main()
{
    char *res[6];

    func("test", res);

    return 0;
}

我使用以下命令编译它:

gcc -o tmp.o -c tmp.c -Wall -Werror -pedantic

我认为正式和实际的论证类型在这里完全合法,尽管有其他答案。

答案 1 :(得分:-2)

您应该在函数参数中执行char** arychar* ary[5](对于长度为5的数组)。

第一种语法传递指向指针的指针,这意味着您可以在内存中放置一个指针数组,并将指针传递给您的函数。请注意,您应该在第二个参数中传递数组的长度,以便能够遍历它。或者你可以将数组中的最后一个指针设置为NULL,然后循环直到你点击它。如果这样做,则无法传递包含NULL指针的数组,因为您不知道何时停止。

第二种语法是将一个固定大小的指针数组传递给你的函数。