【发布时间】:2012-01-26 00:54:46
【问题描述】:
我有几个与 struct 和 typedef 相关的问题,有一段代码,我标记了一些我不确定语法是否正确的地方。我使用 Eclipse 编辑器,它会在编译出现问题时向我显示。我只是不明白为什么有时需要关键字结构,有时不需要。我可能在使用这个关键字时也有一些错误。所以请帮助我理解它。
让我们有结构
typedef struct player
{
char *name;
int gameId;
int points;
int socketfd; //socket descriptor of player
int state;
} player_struct;
让我们有另一个结构
#define PLAYERSLEN 2
typedef struct game{
struct player_struct *players[PLAYERSLEN]; //PLACE1
//some code
} game_struct;
让我们发挥作用
player_struct *create_player() //PLACE2
{
player_struct *player; //PLACE3
//alokace pameti
player = (player_struct *) malloc(sizeof(player_struct)); //PLACE4
//PLACE5
player->gameId = -1;
player->points = 0;
player->state = 0;
return player;
}
让我们发挥作用?其实这个定义是什么意思?
void *( player_struct *player) //PLACE6
{
//some code
}
问题参考:
PLACE1 - 这是正确的吗?为什么我不能只使用 player_struct *players[PLAYERSLEN]; ??
PLACE2 - 看起来 player_struct 之前不需要 struct ,对吗?为什么?
PLACE3 - 看起来也不需要 struct,对吗?为什么?
PLACE4 - 看起来也不需要 struct,对吗?为什么?
PLACE4 & PLACE5我可能应该在那儿处理错误,因为有 malloc,所以我可能应该把 PLACE4 的所有行都放在如果 malloc 失败的情况下我应该放在 PLACE 5 free(player)。我说的对吗?
PLACE6 这个函数或它是什么意思?括号内的代码没有包含在这里应该删除播放器..我只是不明白写函数的语法 - 这是什么意思?
PLACE6 - 再次与之前类似,为什么没有必要在这一行的 player_struct 之前放置关键字 struct?对吗?
非常感谢您的宝贵时间。
【问题讨论】: