0

我有一个结构定义为:

typedef struct pt {
  int x; 
  int y;   
}point;

我还有一个堆栈推送函数声明为:

void push(point p);

现在每当我想调用这个函数时,我可以执行以下操作:

point p = {x_value, y_value};
push(p);

我想知道是否有一个不那么麻烦的解决方法。可以让我在一行中做到这一点的东西。也许是这样的:

push((point){x_value, y_value});
4

2 回答 2

6

定义一个“构造函数”函数:

point make_point(int x, int y)
{
    point result = {x, y};
    return result;
}

然后

push(make_point(x, y));
于 2013-10-28T15:52:57.907 回答
3

您想到的语法在 C99 中开箱即用:

typedef struct {
    int x;
    int y;
} point;

push((point){ 42, 1337 });

更好的是,生成的文字是一个左值,所以如果你的push()函数接受一个指针,你可以获取它的地址:

void push(point *p);

// ...

push(&(point){ 42, 1337 });

演示在这里

于 2013-10-28T15:57:17.127 回答