struct/union/enum的区别
来源:互联网 发布:263工程数据 编辑:程序博客网 时间:2024/05/19 23:28
关于C++和C的区别:
区别最大的是struct,C++中的struct几乎和class一样了,可以有成员函数,而C中的struct只能包含成员变量。enum,union没区别。
struct的定义:
struct
{
};
1、建议将struct的声明和变量的定义分开写,
2、struct内可以放任何类型的变量声明。
struct的内存对齐:
对齐原则:
1、数据成员对齐规则。每个数据成员存储的起始位置要从该成员大小的整数倍开始。
2、数据成员包含结构体:结构体成员要从其内部最大元素大小的整数倍地址开始存储。
3、结构体的总大小:是其内部最大基本成员的整数倍,不足的要补齐。
这个似乎不太重要,没有太大的关系。也就是某些面试或考试题中的难为人的地方了。
union的定义:
union 联合标签
{
};
联合体与结构体的区别:
1、结构体中,每个变量依次存储。
2、联合体中,每个变量都是从偏移地址零开始存储,每次只有一个成员存储于该地址。
enum的定义:
enum 枚举标签{small, media =7, large =10,humungous};
1、枚举通过简单的操作将一串名字和一串整型值相联系起来。
2、缺省情况下,枚举从零开始,如果对列表中的某一个标识符赋值,下一个标识符值比前面一个的值大1.
3、#define 定义的值在编译时候消失,但是枚举定义的,则在调试的过程任然是可见的,可以在代码调试中使用它们。
其实 enum可以相对应define来使用。
举个例子:
union a
{
};
a abc;
abc.b=4;
abc.c=5;
//或者也可以直接在定义时定义变量
union a
{
}abc;
abc.b=4;
abc.c=5;
或者:
typedef union
{
}a;
a abc;
abc.b=4;
abc.c=5;
仔细的看看,很重要,老是用的不对,自己给自己找麻烦的。
/////////////////////////////////////////////////////////////////////////
/////////////////////////////////////////////////////////////////////////
struct的最终大小考虑是最大的那个类型的倍数和每个都要对齐;
enum的大小考虑是最大的那个
enum是枚举,就是某个变量的值是能够列举的,比如,星期的话就每周1到7,月的话就1到12、而struct的话是对于某个变量是有很多数据类型构成一个总体的,比如学生这个变量,他需要学号,姓名,年龄,性别等等,这个时候就需要定义结构体了。而uninon的话呢,其中定义的变量都只占一同块内存。。。
对于结构体:考虑要对齐和占用最大空间的元素所占空间的倍数
对于联合体:考虑是里面所有类型数据占用空间的倍数同时还要比最大的那个还要大的最小数,就是联合体占用的空间,注意数组类型的处理!!!
typedef enum
{
}ANDataType;
sizeof(ANDataType) 为 4
======================================================
struct AAA
{
};
sizeof(AAA) 为
足8 按 8字节计算。比如:
{
};
按结构体中的变量的长度叠加,则大小为 8+(1+1+1+1+1+1+1+1)+1 =17,
比如,
{
};
按结构体中的变量的长度叠加,则大小为 8+1+4 = 13,
======================================================
union AAA
{
};
联合,则以定义中最大的数据类型的长度为准,此联合的 size 为8
备注: union与 struct 的大小与其内部定义的函数无关!!!
- struct union enum的区别
- struct/union/enum的区别
- struct/union/enum的区别
- union, struct, enum 的 大小区别
- union, struct, enum 的 大小区别
- union, struct, enum 的 大小区别
- C的struct, union, enum
- struct union enum
- enum struct union
- struct/enum/union用法
- <struct、union、enum>差异
- struct union enum
- 构造数据类型struct,共用体union,枚举类型enum,宏#define的区别
- C和C++中结构体(struct)、联合体(union)、枚举(enum)的区别
- class struct union 的区别
- union和struct的区别
- union和struct的区别
- struct和Union的区别
- 10天开发的企业站
- 脚本的概念
- C语言的特点及程序小测验
- 中断响应时间/中断步骤/中断源
- 第一章 Linux设备驱动概述
- struct/union/enum的区别
- strcpy函数的用法
- USB设备的4种传输方式
- C/C++ 通过初始化列表和构造…
- MFC类的组织结构及主要的类简介
- 2012年10月20日
- C,C++,C#三者区别
- Refactoring重构改善既有代码的设计
- C和JAVA的区别