gcc将临时变量定义为函数参数

时间:2014-08-04 02:45:31

标签: c function variables gcc

有没有办法在调用函数时定义临时变量以用作函数参数?有一个功能:

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

表达这个的正确表格是什么?

3 个答案:

答案 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);
}