3

例如,给定一个结构 S:

typedef struct {
  int a, b;
} S;

...和一个带有指向 的指针的方法,我可以在一行中将S聚合初始化程序1的值全部分配给它吗?这是我现有的使用临时解决方案:

void init_s(S* s) {
  S temp = { 1, 2 };
  *s = temp;
}

我正在使用 C11。


1对于非常罕见的不理解我的问题的超级学徒,因为不知何故“聚合初始化器”在这里不适用,因为 LHS 没有声明一个新对象,我的意思是“带有大括号和东西的类似聚合初始化器的语法”。

4

1 回答 1

5

是的,您可以使用复合文字语法:

#include <stdio.h>

typedef struct {
  int a, b;
} S;

int main(void) {
    S s;
    S *p = &s;

    *p = (S){1,2};

    printf("%d %d\n", p->a, p->b);
    return 0;
}

演示

于 2017-07-24T21:59:59.360 回答