有没有办法在调用函数时定义临时变量以用作函数参数?有一个功能:
int hello(const int *p);
用
调用它int a = 10;
hello(&a);
但是var a
之后不会被使用,所以我希望它们在一行中,如下所示:
hello(&(int a = 10)); // can't compile
hello(&int(10)); // can't compile
表达这个的正确表格是什么?
答案 0 :(得分:3)
我认为你必须首先定义a
。但是你可以在花括号中做到这一点,这有效地限制了a
的范围:
{
int a = 10;
f (&a);
}
答案 1 :(得分:3)
<强>答案强>
复合文字的正确语法如下:
hello(&(const int){10});
复合文字
根据IBM:
复合文字的语法类似于强制转换表达式的语法。但是,复合文字是左值,而铸造表达式的结果则不是。此外,强制转换只能转换为标量类型或void,而复合文字则会生成指定类型的对象。
答案 2 :(得分:0)
您可以使用范围概念来执行此操作 由于“a”是一个自动整数,因此其范围仅限于声明它的块 因此,您可以简单地将声明和函数调用括在一个块中,如下所示:
{
int a = 10;
hello(&a);
}