雪傲天1 2023-02-20 11:41 采纳率: 96.2%
浏览 24
已结题

下面的new为什么要用方括号,难道是申请了一块数组内存吗

请问一下这个typedef是什么意思?在这里用有什么好处呢
另外这个结构体的含义是定义了一个ROLE的结构体,取了个别名*ROLE,这样理解对不对呢?为什么PROLE前面还要加个星号
呢?有什么意义吗?下面的new为什么要用方括号,难道是申请了一块数组内存吗?下面的pROLE[0].id,为什么可以这么用,难道不是
*PROLE.id吗?它什么时候变成一个数组了?



```c++

typedef struct Role
{
  string id;   int exp;
}*PROLE
..........
PROLE pRole=new Role[5];
pROLE[0].id=1

```

  • 写回答

3条回答 默认 最新

  • 提着裤子去拉屎 2023-02-20 11:52
    关注

    这段代码定义了一个名为 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 可以为复杂的类型定义取一个简短的别名,使代码更加易读和易于维护。而动态分配内存可以在程序运行时根据需要动态分配内存,避免了内存浪费。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(2条)

报告相同问题?

问题事件

  • 系统已结题 2月28日
  • 已采纳回答 2月20日
  • 创建了问题 2月20日

悬赏问题

  • ¥15 求京东批量付款能替代天诚
  • ¥15 slaris 系统断电后,重新开机后一直自动重启
  • ¥15 51寻迹小车定点寻迹
  • ¥15 谁能帮我看看这拒稿理由啥意思啊阿啊
  • ¥15 关于vue2中methods使用call修改this指向的问题
  • ¥15 idea自动补全键位冲突
  • ¥15 请教一下写代码,代码好难
  • ¥15 iis10中如何阻止别人网站重定向到我的网站
  • ¥15 滑块验证码移动速度不一致问题
  • ¥15 Utunbu中vscode下cern root工作台中写的程序root的头文件无法包含