我的结构:
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 ++写作。
答案 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'将被销毁。