C:将一个数组传递给一个"动态"的函数

Ger*_*set 5 c arrays parameter-passing

我有一个函数,我想传递一个char*数组,但我不想创建一个变量只是为了这样做,像这样:

char *bar[]={"aa","bb","cc"};
foobar=foo(bar);
Run Code Online (Sandbox Code Playgroud)

为了解决这个问题,我尝试了这个:

foobar=foo({"aa","bb","cc"});
Run Code Online (Sandbox Code Playgroud)

但它不起作用.我也试过这个:

foobar=foo("aa\0bb\0cc");
Run Code Online (Sandbox Code Playgroud)

它会编译并发出警告,如果我执行该程序,它会冻结.
我尝试过使用星号和&符号,但我无法让它正常工作.

它甚至可能吗?如果是这样,怎么样?

Mat*_*hen 16

是的,您可以使用复合文字.请注意,您需要为函数提供一些方法来了解数组的长度.一种是在结尾处有一个NULL.

foo((char *[]){"aa","bb","cc",NULL});
Run Code Online (Sandbox Code Playgroud)

此功能已在C99中添加.


Car*_*rum 5

您需要声明复合文字的类型:

foobar = foo((char *[]){"aa", "bb", "cc"});
Run Code Online (Sandbox Code Playgroud)