是否可以在函数调用中构造和传递数组/其他容器

Is constructing and passing an array/other container in function call possible?

本文关键字:数组 其他 函数调用 是否      更新时间:2023-10-16

是否有办法在函数调用中构造字符串数组?例如,假设我有这样一个函数:

void foo( char * [] strings )
{
    //...does stuff
}

而不是声明字符数组,然后传递它,有任何方法,与数组或任何其他容器类,调用函数像这样吗?

foo( { "a", "b", "c", ...} );

基本上,我有一个函数,它提示用户输入,直到它与我传递的数组中的一个字符串匹配为止,由于在整个程序中这种情况会发生变化,因此我将接受的输入传递给提示用户并验证输入的函数。目前,我只是在函数外构建它并将其传递进去,但我想知道它们是否可以以任何方式组合成一行

这适用于C99:

void fun(char *argv[])
{
    while(*argv)
        printf("%sn", *argv++);
}
fun((char*[]){"aaa", "bbb", NULL});

既然你提到了"容器",你可能会使用C++,所以这个答案的价值有限(除非你使用的编译器接受它作为扩展-例如GCC的方式)。