在函数调用中声明变量

时间:2016-11-19 10:28:43

标签: c++ c

我的结构:

struct Point {
    int x;
    int y;
    Point(int nX, int nY) { x = nX; y = nY; }
    Point() {};
};

功能:

void functionName(Point target);

我想在函数调用中声明变量:(伪代码)

functionName(Point variable(5,0));

我用C或C ++写作。

3 个答案:

答案 0 :(得分:4)

如果您打算构造一个临时的Point并将其传递给该函数,您可以(对于C ++):

functionName(Point(5,0));

或者对于C ++ 11:

functionName(Point{5,0});

答案 1 :(得分:2)

[对于C,忽略了c'tor和d'tor]

struct Point {
  int x;
  int y;
};

使用这样的复合文字:

functionName((struct Point){5, 0});

请注意,由此定义的复合文字存在于当前上下文的堆栈中,直到上下文为止。

要让函数返回立即释放,请通过执行以下操作将函数调用包装在自己的上下文中:

{
  functionName((struct Point){5, 0});
}

答案 2 :(得分:0)

如果你想使用那个变量,在函数完成后(我想你可能也这样做,因为你想给你的参数一个名字),你可能想要传递ref / pointer,例如: / p>

void functionName(Point& target);
Point variable(5,0);
functionName(variable);

如果你真的不需要变量,你可以通过调用构造函数作为参数来传递rvalue:

functionName(Point(5,0));

请注意,当函数返回时,'target'将被销毁。