c++ - 如何在不使用变量 C/C++ 的情况下将常量数组文字传递给采用指针的函数?

标签 c++ c function

如果我有一个看起来像这样的原型(prototype):

function(float,float,float,float)

我可以像这样传递值:

function(1,2,3,4);

所以如果我的原型(prototype)是这样的:

function(float*);

有什么方法可以实现这样的目标吗?

function( {1,2,3,4} );

只是在寻找一种不创建临时变量的懒惰方法,但我似乎无法确定语法。

最佳答案

您可以在 C99(但不是 ANSI C (C90) 或 C++ 的任何当前变体)中使用复合文字。有关详细信息,请参阅 C99 标准的第 6.5.2.5 节。这是一个例子:

// f is a static array of at least 4 floats
void foo(float f[static 4])
{
   ...
}

int main(void)
{
    foo((float[4]){1.0f, 2.0f, 3.0f, 4.0f});  // OK
    foo((float[5]){1.0f, 2.0f, 3.0f, 4.0f, 5.0f});  // also OK, fifth element is ignored
    foo((float[3]){1.0f, 2.0f, 3.0f});  // error, although the GCC doesn't complain
    return 0;
}

GCC 还将此作为 C90 的扩展提供。如果您使用 -std=gnu90(默认)、-std=c99-std=gnu99 进行编译,它将编译;如果您使用 -std=c90 进行编译,则不会。

关于c++ - 如何在不使用变量 C/C++ 的情况下将常量数组文字传递给采用指针的函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3366386/

相关文章:

c++ - 不明确的位域语句

c - 从 C 文件中读取标记

mysql - 获取行的最大值或最小值,但忽略空白列或 0

c++ - SIGSEGV 同时尝试读取数组

c++ - 在一个普通的可复制结构中, move 语义应该被实现吗?

c++ - QRegularExpression 计数出现次数

c - 带有说明符 "%g"的 printf 的精度

将 C 中的字符串文字复制到字符数组中

r - 如何将mapply推广到工作 "crosswisely"?

PHP,使用所有其他数组值