gpt4 book ai didi

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

转载 作者:IT老高 更新时间:2023-10-28 12:46:41 31 4
gpt4 key购买 nike

如果我有一个如下所示的原型(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/1269568/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com