小编给大家分享一下c++结构体结构与共用体联盟是什么,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获、下面让我们一起去了解一下吧!
编码运行环境:VS2017 + Win32 +调试,Win32表示生成32位的应用程序。
引用>结构体(结构)与共用体(联盟)是C语言中就已经存在的数据类型,c++对他们进行了扩充,最大的变化是允许在结构和公用体中定义成员函数。下面将通过实例讲解二者的特性和用法。
<强> 1。struct 强>
以下是一个使用了结构体的c++程序。
# include & lt; iostream> 使用名称空间性病; 结构体的房间 { int地板; int没有; }; 结构体的学生 { int年龄; int分数; 学生(int, int) { 年龄=; 分数=s; } }; int主要(int命令行参数个数,char * argv []) { 房间r [3]={{1101}、{2201}、{3301}}; 学生年代(89); cout<& lt;“房间是:“ cout<& lt; r [0] .floor<& lt;“产生绯闻;& lt; & lt; r [0] .No<& lt;““; cout<& lt; r [1] .floor<& lt;“产生绯闻;& lt; & lt; r [1] .No<& lt;““; cout<& lt; r [2] .floor<& lt;“产生绯闻;& lt; & lt; r [2] .No<& lt; endl; cout<& lt;“学生# 39;年龄:“& lt; & lt; s.age<& lt;“得分:“& lt; & lt; s.score<& lt; endl; 获取字符(); }程序运行结果:
房间:1 - 101 2 - 201 3 - 301
引用>
学生# 39;年龄:18分数:89阅读以上程序,在c++中使用结构体需要注意以下几点:
, (1) c++中,结构体是一种真正的数据类型,在利用结构定义变量时,不需要像在C中带上struct关键字,或先使用typedef struct structname structalias的方式进行申明。
(2) c++中对C的结构进行了扩充,允许在结构体中定义成员函数.struct中的成员变量和成员函数也有访问权限,在类中,默认的访问权限是私人的,而在结构体中默认访问权限是公开的,这是结构体和类的唯一区别.struct成员的默认访问权限设为公共是c++保持与C语言兼容而采取的一项策略。
(3)如果结构中没有显示定义任何构造函数,那么结构变量可以像在C语言中那样用花括号顺序指明数据成员的值来进行初始化。但是一旦显示定义了任何一个构造函数,就不能用这种方式初始化了。如果在类中只有若干公共型的数据成员,而没有显示定义任何构造函数,也可以使用花括号进行初始化。
(4)用sizeof运算符计算结构的大小时,要考虑结构体内部变量的对齐问题。
<强> 2.联盟强>
共用体(联盟),又名联合体,是一种特殊的类,从C语言章继承而来,其基本语义没有发生什么变化,只是具有了类的一些特性(允许定义成员函数)。在实际的编程实践中,使用频率没有结构高。与结构相比,最显著的区别是联盟的数据成员共享同一段内存,以达到节省空间的目的。
<强> 2.1联盟的基本性质强>
通过如下程序考察联盟变量的占用空间,成员赋值时的相互影响。
# include & lt; iostream> 使用名称空间性病; 联盟testunion { 字符c; int我; }; int主要(int命令行参数个数,char * argv []) { cout<& lt; sizeof (testunion) & lt; & lt; endl; testunion * pt=新testunion; char * p=reinterpret_cast程序运行结果:
引用>
-51 -51 -51 -51
-842150451
65 -51 -51 -51 -842150591
可以看的出,联盟testunion变量的体积是4,它是由两个数据成员中体积较大的一个(int)类型来决定的。对其中一个数据成员的修改,一定会同时改变所有其他数据成员的值。不过对体积较小的数据成员的修改,只会影响到该成员应该占用的那些字节,对超出部分(高位字节)没有什么影响。
<强> 2.2联盟的高级特性强>
观察如下程序。
# include & lt; iostream> 使用名称空间性病; 结构体的学生 { int年龄; int分数; 学生(int, int) { 年龄=; 分数=s; } }; 联盟testunion { 字符c; int我; }; 类someClass { int num; 公众: 空白显示(){coutc++结构体结构与共用体联盟是什么