我有一个函数,我想将char *数组传递给它,但我不想为此创建变量,就像这样:

char *bar[]={"aa","bb","cc"};
foobar=foo(bar);

为了解决这个问题,我尝试了以下方法:
foobar=foo({"aa","bb","cc"});

但这是行不通的。我也尝试过这个:
foobar=foo("aa\0bb\0cc");

它编译时带有警告,如果我执行该程序,它将卡住。
我也尝试过使用星号和&符,但是我无法使其正常工作。

可能吗?如果是这样,怎么办?

最佳答案

是的,您可以使用复合文字。请注意,您将需要为函数提供某种方式来了解数组的长度。一种是在末尾使用NULL。

foo((char *[]){"aa","bb","cc",NULL});

此功能已在C99中添加。

关于C:将数组传递给函数 'on the fly',我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/3744117/

10-13 04:44