如何使用一行代码设置结构成员?
typedef struct {
int x;
int y;
}test;
test obj[2];
int main()
{
obj[0].x=0; //this works
obj[0].y=0; //this works
obj[0]={0,0}; //compilation error
}
Run Code Online (Sandbox Code Playgroud)
可以使用运算符对结构进行赋值=,与 C 中的任何其他值完全相同:
obj[0] = existing_test;
obj[1] = function_returning_test();
Run Code Online (Sandbox Code Playgroud)
上述依赖于结构值,这些值本身来自程序中的其他位置(可能已在多个语句中初始化,如问题中所示);要在单个表达式中创建结构体值,请使用对象字面量语法:
obj[0] = (test){ .x = 15, .y = 17 };
obj[1] = (test){ .y = 19 };
Run Code Online (Sandbox Code Playgroud)
此类文字中遗漏的任何字段仍然存在,但设置为其类型的适当零值,因此在上面的示例中obj[1].x设置为零。