(四)C语言基础(结构体,联合体,枚举,别名)
2016-12-10 12:44
387 查看
八、结构体,联合体
1. 说明
结构体:- 类似Java中的封装类
联合体:
- 所有字段公用一块内存空间
2. 实例
#include<stdio.h> /* 联合体,结构体,结构体指针 */ //定义一个结构体 struct Student { int age; float score; char sex; }; //定义一个联合体:所有字段公用一块内存空间 //使用优势:方便类型转换 union Mix{ long i; //4byte int k; //4byte char ii;//1btyp }; int main(Void){ //size data:12 //结构体中总体字段长度 printf("size data:%d\n",sizeof(struct Student)); //size mix: 4 //联合体中最大字段长度 printf("size mix: %d\n",sizeof(union Mix)); /* 结构体 */ //结构体的使用 struct Student stu={ 16,90.5,'F' }; //age: 16,score: 90.5,sex: F //结构体赋值 printf("age: %d,score: %.1f,sex: %c\n",stu.age,stu.score,stu.sex); //结构体赋值 stu.age = 22; //age: 22 //结构体取值 printf("age: %d\n",stu.age); /* 结构体指针 */ struct Student* point = &stu;//一级指针 struct Student** point2 = &point;//二级指针 //一级结构体指针取值,以下两种方式等价 //(*point).age: 22 //一级结构体指针取值 printf("(*point).age: %d\n",(*point).age); //point->age: 22 printf(" point->age: %d\n",point->age); //一级结构体指针赋值 // point->age: 99 //一级结构体指针赋值 point->age = 99; printf(" point->age: %d\n",point->age);// point->age: 99 //二级结构体指针取值,注意两种方式都要加括号() printf("(**point).age: %d\n",(**point2).age);//(**point).age: 99 printf(" *point->age: %d\n",(*point2)->age);// *point->age: 99 //二级结构体指针赋值 // *point->age: 77 (*point2)->age = 77; printf(" *point->age: %d\n",point->age); /* 联合体 */ //联合体的使用 union Mix m; m.i = 100; m.k = 123; //value m.i = 123 //由于使用同一块内存空间,被后赋值所覆盖 printf("value m.i = %d\n",m.i); //value m.k = 123 printf("value m.k = %d\n",m.k); return 0; }
九、枚举
1. 说明
有限个类,值自增2. 实例
#include<stdio.h> /* 枚举 : 枚举的值递增 默认首元素为0 */ //定义枚举 enum WeekDay{ Monday = 0,Tuesday,Wednesday,Thursday,Friday,Saturday,Sunday }; int main(void){ enum WeekDay day = Sunday; printf("%d\n",day);//Log: 6 --> 枚举递增 return 0; }
十、别名
1. 说明
一种编译时处理的声明用来简化代码编写
2. 实例
#include<stdio.h> /* 1. 声明自定义数据类型,配合各种原有数据类型来达到简化编程的目的 2. 用来为复杂的声明 定义简单的别名 3. 在编译阶段处理(区别"#define N 4"是预处理指令) */ typedef int i; typedef long l;//如果原有数据类型名字很长,使用别名 int main(void){ i a = 10; l b = 100; printf("a = %d,b = %d",a,b);//a = 10,b = 100 }
相关文章推荐
- c语言基础3—变量、结构体、枚举
- 黑马程序员_C语言基础_构造类型(数组,结构体,枚举)
- C语言基础数据类型 结构体和联合体的区别
- C语言基础六_结构体、枚举
- Android JNI编程(六)——C语言函数指针、Unition联合体、枚举、Typedef别名、结构体、结构体指针
- C语言基础 结构体 枚举
- C语言基础之结构体、共用体、枚举、类型定义typedef
- Android JNI编程(六)——C语言函数指针、Unition联合体、枚举、Typedef别名、结构体、结构体指针
- C语言基础知识----联合 && 枚举 && 结构体
- C语言基础-结构体和联合体 [转]
- C语言基础学习——第9天(结构体、联合、枚举)
- 黑马程序员------C语言基础 结构体、枚举及关键字 typedef
- C++基础2:结构体、联合体、枚举
- 黑马程序员——C语言基础——结构体、枚举
- 黑马程序员——C语言基础---复杂数据类型(变量,结构体,枚举)
- 黑马程序员-----------C语言基础-----------结构体·枚举
- C#语言学习--基础部分(十三)枚举类型和结构体
- 【C语言基础】关于结构体,枚举,联合,位段的一些知识
- 从Android/Java基础之上学习C/C++语言(6)--C语言基础--联合体与枚举
- C语言基础-结构体和联合体