我想在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**
我该如何更正我的代码?
答案 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** ary
或char* ary[5]
(对于长度为5的数组)。
第一种语法传递指向指针的指针,这意味着您可以在内存中放置一个指针数组,并将指针传递给您的函数。请注意,您应该在第二个参数中传递数组的长度,以便能够遍历它。或者你可以将数组中的最后一个指针设置为NULL,然后循环直到你点击它。如果这样做,则无法传递包含NULL指针的数组,因为您不知道何时停止。
第二种语法是将一个固定大小的指针数组传递给你的函数。