您的位置:首页 > 编程语言 > C语言/C++

(四)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语言