归零并初始化C结构

时间:2015-08-12 00:56:45

标签: c struct

我有一个我想要归零的结构,然后设置成员。我试过这个:

cmdRequest_t cmdRequest = {0};
cmdRequest = {3, "d t"};

但这不起作用。我也尝试了几种变体,但我总是在第二行得到语法错误。我怎么能这样做?

3 个答案:

答案 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" };

我建议使用像这样的成员名称显式初始化,因为这样可以随心所欲地重构结构变得简单;您可以更改顺序,成员名称等,编译器将为您完成大部分繁重的工作。