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没有声明一个新对象,我的意思是"聚合初始化器一样的语法与括号和东西".
是的,您可以使用复合文字语法:
#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)