雪傲天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 phython如何实现以下功能?查找同一用户名的消费金额合并—
  • ¥15 孟德尔随机化怎样画共定位分析图
  • ¥18 模拟电路问题解答有偿速度
  • ¥15 CST仿真别人的模型结果仿真结果S参数完全不对
  • ¥15 误删注册表文件致win10无法开启
  • ¥15 请问在阿里云服务器中怎么利用数据库制作网站
  • ¥60 ESP32怎么烧录自启动程序
  • ¥50 html2canvas超出滚动条不显示
  • ¥15 java业务性能问题求解(sql,业务设计相关)
  • ¥15 52810 尾椎c三个a 写蓝牙地址