typedef struct语法原理及结构体定义疑问咨询
嘿,别担心,新手刚接触C语言的类型定义确实容易绕晕,我来给你一步步拆解清楚~
问题1:typedef struct { char pseudo[MAX_SIZE] ; int nb_mar ; } player ; 是否创建了包含字符数组和int的player类型?
完全正确!这行代码的作用就是给一个匿名结构体起了一个简洁的别名player。具体来说:
- 首先定义了一个没有名字的结构体,它包含两个成员:长度为
MAX_SIZE的字符数组pseudo(应该是用来存储玩家昵称的),以及整数类型的nb_mar(可能用来记录玩家的得分、标记数量这类计数)。 - 然后通过
typedef关键字,把这个匿名结构体的类型名简化成了player。
之后你就可以直接用player来声明变量了,比如:
player my_player; my_player.nb_mar = 5; strcpy(my_player.pseudo, "Alice");
如果没有这个typedef,你每次声明变量都得写一大串struct { ... } my_player;,显然麻烦很多——typedef的核心作用就是简化复杂类型的名称。
问题2:struct set_of_players { player T[NB_MAX_JOUEURS] ; int nb ; }; 的作用是什么?
这行代码是定义了一个新的结构体类型,而不是直接创建变量。这个结构体类型struct set_of_players的作用是帮你管理一组玩家数据:
- 成员
T是一个player类型的数组,大小为NB_MAX_JOUEURS,用来存储最多NB_MAX_JOUEURS个玩家的信息。 - 成员
nb是一个整数,通常用来记录数组里实际有效的玩家数量(因为数组是固定大小的,大概率不会被填满,nb就能帮你跟踪当前有多少真实的玩家数据)。
如果要创建这个类型的变量,你需要单独声明,比如:
struct set_of_players game_players; game_players.nb = 0; // 初始时没有玩家
要是你觉得struct set_of_players这个名字太长,也可以给它加个typedef简化:
typedef struct set_of_players player_set; player_set game_players; // 这样声明变量更简洁
内容的提问来源于stack exchange,提问作者iaskdumbstuff
相关产品推荐
相关产品推荐

