这段代码定义了一个名为 Role 的结构体,其中包含两个成员变量:id 和 exp,分别表示角色的编号和经验值。此外,还定义了一个指向 Role 结构体的指针类型 PROLE,用于声明指向 Role 结构体的指针变量。
下面解释一下你的问题:
typedef struct Role {...}PROLE:这行代码定义了一个指向 Role 结构体的指针类型 PROLE,其中 PROLE 表示这个类型是一个指针类型。这个类型取别名为 ROLE,即 ROLE 等价于 struct Role。
PROLE pRole = new Role[5]:这行代码使用 new 运算符在堆上动态分配了 5 个 Role 类型的内存,并返回一个指向分配内存的指针,这个指针的类型是 PROLE,即 struct Role。由于分配的是 5 个 Role 类型的内存,所以这里使用了方括号。
pROLE[0].id = 1:这行代码通过指向 Role 结构体的指针 pRole 访问第一个元素,即 pROLE[0],然后使用点号 . 访问该元素的 id 成员变量。由于 pRole 的类型是 PROLE,即 struct Role*,所以可以通过 -> 运算符访问成员变量,即 pRole->id 等价于 pROLE[0].id。注意,这里的 1 应该是一个字符串,而不是整数。
总之,使用 typedef 可以为复杂的类型定义取一个简短的别名,使代码更加易读和易于维护。而动态分配内存可以在程序运行时根据需要动态分配内存,避免了内存浪费。