在C中初始化某个struct字段on-initialization

时间:2015-05-12 17:17:57

标签: c string struct

我想在这里做的是用空字符串值""初始化所有玩家的名字,我听说它可以在C99的声明点完成,但我不完全确定

typedef struct data_players
{   char name[25];
    int hp;
    int mana;
    int id;

}player;

player player_list[10]

在这种情况下,我该怎么办?

2 个答案:

答案 0 :(得分:3)

struct data_players
{   char name[25];

} player = "";

struct data_players
{   char name[25];

} player = { "" };

这会在声明时初始化结构的第一个成员。如果有更多成员,请用逗号分隔。 还有一件事。您的结构不应在声明时进行类型定义,以进行这种初始化。

如果你有一个结构数组,并且你想在C99中初始化它们,你可以使用"指定的初始化程序"在宣布时间。

player arr [2] = { {.name = ""}, {.name = ""} };

这会将arr[0]arr[1]的名称成员初始化为空字符串。虽然我觉得它没有多大意义,因为它无论如何都默认为空字符串。

答案 1 :(得分:2)

在声明时,您使用<div id="header"> <ul class="menu"> <li><a href="#"><img src="Images/logo.png" alt="logo" height="28" width="117""></a> </li> <li><a href="#">The Product</a> </li> <li><a href="#">Order Yours</a> </li> <li><a href="#">About Us</a> </li> <li> <a href="#">Support </a> <ul class="dropdown-menu"> <li><a href="#">Read our FAQ</a> </li> <li><a href="#">Post a Support Ticket</a> </li> <li><a href="#">Orders & Shipping</a> </li> </ul> </li> <li><a href="#">Get in touch with us</a> </li> </ul> <p></p> <div style="visibility: hidden;" class="flexslider"> <ul class="slides"> <li> <img src="Images/background.png" alt="img1" /> </li> <li> <img src="Images/background.png" alt="img2" /> </li> <li> <img src="Images/background.png" alt="img3" /> </li> </ul> </div> </div>初始化结构,如下所示:

{}

请注意,任何跳过的初始值设定项都默认为零,因此如果您始终将整个数组初始化为零,这就足够了:

player player_list[10] = {{"", 0, 0, 0},{"", 0, 0, 0},{"", 0, 0, 0},{"", 0, 0, 0},{"", 0, 0, 0},{"", 0, 0, 0},{"", 0, 0, 0},{"", 0, 0, 0},{"", 0, 0, 0},{"", 0, 0, 0}};

另请注意,如果player player_list[10] = {0}; 是全局变量或静态变量,它将自动初始化为全零。好像你打电话了

player_list
程序开始时