给定一个结构的指针,我可以在一行中为聚合初始化器的结果分配结构吗?

Bee*_*ope 3 c compound-literals assignment-operator aggregate-initialization c11

例如,给定结构S:

typedef struct {
  int a, b;
} S;
Run Code Online (Sandbox Code Playgroud)

...以及一个带指针的方法S,我可以在一行中为它分配聚合初始值设定项1的值吗?这是我使用临时的现有解决方案:

void init_s(S* s) {
  S temp = { 1, 2 };
  *s = temp;
}
Run Code Online (Sandbox Code Playgroud)

我正在使用C11.


1对于那些不了解我的问题的非常罕见的超级学生,因为不知何故"聚合初始化器"在这里不适用,因为LHS没有声明一个新对象,我的意思是"聚合初始化器一样的语法与括号和东西".

Eug*_*Sh. 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;
}
Run Code Online (Sandbox Code Playgroud)

演示