首页 > 代码库 > C语言基础知识----联合 && 枚举 && 结构体
C语言基础知识----联合 && 枚举 && 结构体
结构体
struct 结构体标签(可选)
{
类型1 标识符1;
类型2 标识符2;
.......
}(变量定义可选);
联合
union 可选的标签
{
类型1 标识符1;
类型2 标识符2;
........
}可选的变量定义;
联合与结构体相似,但内存布局上存在关键性的区别。结构体中每个成员顺序存储;而在联合中,所有的成员都是从偏移量为零处开始存储(位置是重叠的),并且在某一时刻,只有一个成员真正存储于改地址。
枚举(它用于声明一组命名的常数,当一个变量有几种可能的取值时,可以将它定义为枚举类型)
enum 可选标签{内容 .....}可选变量定义;
若对列表中的某个标识符进行了赋值,那么紧接其后的那个标志符就比所赋值大1.但对于前面未定义的标识符不能反推
枚举中的名字通常一直在调试器中可见,可以在调试代码时使用;而#define宏定义的常量,一般编译时就被替换掉了。
示例program
[cpp] view plaincopyprint?
- #include <stdio.h>
- struct s
- {
- int a;
- char c;
- } s1;
- enum e
- {
- a,b=3
- }e1;
- union u
- {
- int a;
- int b;
- char c;
- }u1;
- int main(void)
- {
- s1.a=3;
- u1.a=3;
- u1.b=4;
- e1=b;
- printf("struct:s1.a=%d\n",s1.a);
- printf("enum:e1_b=%d\n",e1);
- printf("union:u1.a.&=%x\n",&u1.a);
- printf("union:u1.b.&=%x\n",&u1.b);
- }
运行结果
从运行结果可知联合中所有成员共用一个存储地址,同时有且只有一个存在。
C语言基础知识----联合 && 枚举 && 结构体
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。