设为首页 加入收藏

TOP

4.8.4 使用new创建动态结构(1)
2013-10-07 15:40:21 来源: 作者: 【 】 浏览:83
Tags:4.8.4 使用 new 创建 动态 结构

4.8.4  使用new创建动态结构(1)

在运行时创建数组优于在编译时创建数组,对于结构也是如此。需要在程序运行时为结构分配所需的空间,这也可以使用new运算符来完成。通过使用new,可以创建动态结构。同样,"动态"意味着内存是在运行时,而不是编译时分配的。由于类与结构非常相似,因此本节介绍的有关结构的技术也适用于类。

将new用于结构由两步组成:创建结构和访问其成员。要创建结构,需要同时使用结构类型和new。例如,要创建一个未命名的inflatable类型,并将其地址赋给一个指针,可以这样做:

 

这将把足以存储inflatable结构的一块可用内存的地址赋给ps。这种句法和C++(www.cppentry.com)的内置类型完全相同。

比较棘手的一步是访问成员。创建动态结构时,不能将成员运算符句点用于结构名,因为这种结构没有名称,只是知道它的地址。C++(www.cppentry.com)专门为这种情况提供了一个运算符:箭头成员运算符( >)。该运算符由连字符和大于号组成,可用于指向结构的指针,就像点运算符可用于结构名一样。例如,如果ps指向一个inflatable结构,则ps >price是被指向的结构的price成员(参见图4.11)。

 
图4.11  标识结构成员

提示:有时,C++(www.cppentry.com)新手在指定结构成员时,搞不清楚何时应使用句点运算符,何时应使用箭头运算符。规则非常简单。如果结构标识符是结构名,则使用句点运算符;如果标识符是指向结构的指针,则使用箭头运算符。

另一种访问结构成员的方法是,如果ps是指向结构的指针,则*ps就是被指向的值-结构本身。由于*ps是一个结构,因此(*ps).price是该结构的price成员。C++(www.cppentry.com)的运算符优先规则要求使用括号。

程序清单4.21使用new创建一个未命名的结构,并演示了两种访问结构成员的指针表示法。

程序清单4.21  newstrct.cpp

 
下面是该程序的运行情况:
 

】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇4.8.4 使用new创建动态结构(2) 下一篇4.8.3 指针和字符串(3)

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容:

·C语言中如何将结构体 (2025-12-24 22:20:09)
·纯C语言结构体成员变 (2025-12-24 22:20:06)
·C语言中,指针函数和 (2025-12-24 22:20:03)
·哈希表 - 菜鸟教程 (2025-12-24 20:18:55)
·MySQL存储引擎InnoDB (2025-12-24 20:18:53)