如何一次性设置所有结构成员的值?

use*_*000 4 c

如何使用一行代码设置结构成员?

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)

Leu*_*nko 6

可以使用运算符对结构进行赋值=,与 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设置为零。