结构体、联合、枚举
来源:互联网 发布:图标大全软件 编辑:程序博客网 时间:2024/05/16 13:05
为了让一个存储区能记录多个相关数字,就需要制作新的数据类型.
结构体:
结构体可以用来创建新的数据类型
用结构体创建的数据类型需要先声明,然后才能使用
声明结构体类型的时候,需要使用struct关键字
结构体声明不能分配内存,它仅仅描述了结构体存储区的格式
结构体声明语句可以写在头文件里
把结构体作为数据类型声明变量,这种变量叫结构体变量。它们会真正分配内存,它们才能记录数字
#include <stdio.h>
typedef struct
{ //不会分配内存,只是描述了格式
int age;
float height;
char name[10];
} person;
int main()
{
person prs1= {20,1.72,"abc"};//分配内存
return 0;
}
typedef关键字可以给数据类型起别名
结构体存储区通常不会作为整体使用,一次只会使用其中某个小存储区
两个函数之间传递结构体数据的时候,不应该使用结构体类型的存储区,这个时候应该采用结构体指针类型的存储区
如果希望从被调用函数向调用函数传递结构体内容,就可以使用结构体指针类型的存储区存放返回值
一个存储区的大小必须是它自身大小的整数倍(double类型存储区的大小是4的整数倍)
结构体内部的子存储区通常需要遵守数据对齐的规则
数据对齐可能造成结构体内部子存储区之间的空隙
#include <stdio.h>
typedef struct
{
char ch;//1个字节+浪费3个字节
int num;//4个字节
} stru1;
int main()
{
printf("sizeof(stru1)=%d\n", sizeof(stru1));//8
return 0;
}
枚举类型:
枚举类型中包含有限个整数,每个整数可以用一个名字表示
声明枚举类型的时候需要使用enum关键字
枚举类型中第一个名称对应的整数是0,向后依次递增
#include <stdio.h>
int main()
{
enum season {CHUN,XIA,QIU,DONG};
printf("QIU=%d\n",QIU);//2
}
联合:
声明联合的时候,需要使用union关键字
联合里也包含多个子存储区,只不过所有子存储区的地址都一样
对任何一个子存储区的修改会影响其它子存储区
联合变量的大小是其中最大子存储区的大小
#include <stdio.h>
typedef union
{
char ch;
int num;
} un;
int main()
{
un un1 = {0};
printf("sizeof(un1)=%d\n",sizeof(un1));// 4
}
- 结构体、联合、枚举
- 结构体,枚举,联合
- 联合 枚举和结构体
- 结构体,联合和枚举
- 复合数据类型,结构体,联合,枚举
- 基础备忘:结构体、联合、枚举笔记
- C语言基础知识----联合 && 枚举 && 结构体
- 【C语言总结】结构体、联合、枚举
- 结构体、联合、枚举与高级指针
- C语言结构体、枚举、联合
- 总结结构体枚举联合位段
- 自定义类型:结构体、枚举、联合
- 自定义类型:结构体,枚举,联合
- 自定义类型:结构体,枚举,联合
- 结构体、位段、枚举、联合
- 自定义类型:结构体,枚举,联合
- 结构、联合和枚举
- 结构、联合、枚举
- [leetcode] 150. Evaluate Reverse Polish Notation 解题报告
- Unity3D如何有效地组织代码
- Android实际开发问题05------杀不死的服务
- 队列
- 新旧代码的兼容1
- 结构体、联合、枚举
- 学车记录
- iOS日期处理小结
- Spring4.0学习笔记003——Bean的配置一(基于XML文件)
- Chrome浏览器加载CSS文件TTFB waiting超时的奇葩问题
- 提取字符串中的url网址 正则表达式
- web容器之jetty
- 单链表的实现(书上练习题3.2)
- ubuntu系统菜单时间丢失