gpt4 book ai didi

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

转载 作者:太空宇宙 更新时间:2023-11-04 14:26:42 24 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/3366386/

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