如何在C++中传递数组给函数而不需要变量实例化?

12

我能在 C++ 中做这个吗(如果可以,语法是什么)?

void func(string* strs) {
    // do something
}
func({"abc", "cde"});

我想将一个数组传递给函数,而不需要将其实例化为一个变量。

4个回答

13

按照C++03的定义,无法完成此操作。

您需要的功能称为“复合字面量”。它在C语言中存在,是由C99定义的(当然具有C特定的功能),但在C++中不存在。

类似的功能也计划添加到C++中,但目前还没有实现。


2
C++11怎么样? - Albert

0

我认为在C++98中你无法做到这一点,但是在C++1x中你可以使用初始化列表


我非常喜欢initializer_lists。 - Dennis Zickefoose
你所链接的例子使用了 std::vector,那么如何在数组中实现相同的功能呢? - Albert

0

按照目前的写法,你无法这样做。该函数期望一个指向字符串的指针。即使你能够将数组作为字面量传递,函数调用也会生成错误,因为字面量被认为是常量(因此,字面量数组的类型将是const string*,而不是函数所期望的string*)。


如果我不实例化一个变量,它仍然具有指针(地址)。 - yegor256

0
使用可变参数函数将无限的未分类信息传递到函数中。然后可以对传入的数据进行任何操作,例如将其填充到内部数组中。

可变参数函数


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接