码迷,mamicode.com
首页 > 编程语言 > 详细

C语言基础知识----联合 && 枚举 && 结构体

时间:2014-08-30 11:18:19      阅读:239      评论:0      收藏:0      [点我收藏+]

标签:c语言   结构   

结构体
struct 结构体标签(可选)
{
    类型1 标识符1;
     类型2 标识符2;
     .......
}(变量定义可选);

联合
union 可选的标签
{
     类型1 标识符1;
     类型2 标识符2;
     ........

}可选的变量定义;
联合与结构体相似,但内存布局上存在关键性的区别。结构体中每个成员顺序存储;而在联合中,所有的成员都是从偏移量为零处开始存储(位置是重叠的),并且在某一时刻,只有一个成员真正存储于改地址

枚举(它用于声明一组命名的常数,当一个变量有几种可能的取值时,可以将它定义为枚举类型)
enum 可选标签{内容 .....}可选变量定义;
若对列表中的某个标识符进行了赋值,那么紧接其后的那个标志符就比所赋值大1.但对于前面未定义的标识符不能反推
枚举中的名字通常一直在调试器中可见,可以在调试代码时使用;而#define宏定义的常量,一般编译时就被替换掉了。

示例program
  1. #include <stdio.h>  
  2. struct s  
  3. {  
  4.      int a;  
  5.      char c;  
  6. } s1;  
  7. enum e  
  8. {  
  9.      a,b=3  
  10. }e1;  
  11. union u  
  12. {  
  13.      int a;  
  14.      int b;  
  15.      char c;      
  16. }u1;  
  17. int main(void)  
  18. {  
  19.      s1.a=3;  
  20.      u1.a=3;  
  21.      u1.b=4;  
  22.      e1=b;  
  23.      printf("struct:s1.a=%d\n",s1.a);  
  24.      printf("enum:e1_b=%d\n",e1);  
  25.      printf("union:u1.a.&=%x\n",&u1.a);  
  26.      printf("union:u1.b.&=%x\n",&u1.b);  
  27. }  
运行结果
bubuko.com,布布扣
从运行结果可知联合中所有成员共用一个存储地址,同时有且只有一个存在。

C语言基础知识----联合 && 枚举 && 结构体

标签:c语言   结构   

原文地址:http://blog.csdn.net/codebat/article/details/38942113

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!