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中添加.