我有一个我想要归零的结构,然后设置成员。我试过这个:
cmdRequest_t cmdRequest = {0};
cmdRequest = {3, "d t"};
但这不起作用。我也尝试了几种变体,但我总是在第二行得到语法错误。我怎么能这样做?
答案 0 :(得分:7)
简单地说:
cmdRequest_t cmdRequest = {3, "d t"};
如果您要立即填写其他值,则无需将结构归零。
答案 1 :(得分:2)
如果您需要执行赋值并且无法使用初始化,则需要使用(C99或更高版本)复合文字:
cmdRequest = (cmdRequest_t){ 3, "d t" };
答案 2 :(得分:1)
其他人已经给出了初始化的答案:
cmdRequest_t cmdRequest = {3, "d t"};
如果您想要重新分配此结构,将第一个成员设置为42,将第二个成员(隐式)设置为空指针,则可以使用此结构:
cmdRequest = (cmdRequest_t) { 42 };
如果要重新分配结构,设置第二个成员,则需要在初始化列表中使用第二个成员的名称。例如,如果我们认为第二个成员名为 fubar
:
cmdRequest = (cmdRequest_t) { .fubar = "hello world" };
我建议使用像这样的成员名称显式初始化,因为这样可以随心所欲地重构结构变得简单;您可以更改顺序,成员名称等,编译器将为您完成大部分繁重的工作。